Найти записи MongoDB, где поле массива не пустое

Обратные вызовы наиболее легко описаны в терминах телефонной системы. Вызов функции аналогичен вызову кого-то по телефону, задавая ей вопрос, получая ответ и подвешивая; добавление обратного вызова изменяет аналогию, поэтому, задав ей вопрос, вы также дадите ей свое имя и номер, чтобы она могла перезвонить вам с ответом.

- Пол Якубик, «Обратный звонок» Реализации в C ++ "

414
задан Neil Lunn 30 October 2017 в 20:51
поделиться

2 ответа

Начиная с версии 2.6, другой способ сделать это - сравнить поле с пустым массивом:

ME.find({pictures: {$gt: []}})

Тестирование его в оболочке:

> db.ME.insert([
{pictures: [1,2,3]},
{pictures: []},
{pictures: ['']},
{pictures: [0]},
{pictures: 1},
{foobar: 1}
])

> db.ME.find({pictures: {$gt: []}})
{ "_id": ObjectId("54d4d9ff96340090b6c1c4a7"), "pictures": [ 1, 2, 3 ] }
{ "_id": ObjectId("54d4d9ff96340090b6c1c4a9"), "pictures": [ "" ] }
{ "_id": ObjectId("54d4d9ff96340090b6c1c4aa"), "pictures": [ 0 ] }

Так он правильно включает документы, где pictures имеет хотя бы один элемент массива, и исключает документы, где pictures является либо пустым массивом, а не массивом, либо отсутствует.

28
ответ дан JohnnyHK 30 October 2017 в 20:51
поделиться
ME.find({pictures: {$exists: true}}) 

Просто, это работало на меня.

-7
ответ дан Luis Fletes 30 October 2017 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: