2015-11-16 2 views
0

Think этих документов в MongoDB:Найти документ, который соответствует те же элементы массива в MongoDB

{id:1, people:['james', 'john', 'candy']} 
{id:2, people:['james', 'john', 'candy', 'gary']} 

Как я могу найти документ, который соответствовал только полный набор элементов массива, независимо от порядка элементов массива.

Например, если я ввода этого:

input=[ 'candy', 'james', 'john' ] 

Ответ соответствующий документ должен быть id:1.

Если у меня были другие документы с одинаковыми 3 людьми, независимо от их порядка в массиве MongoDB people, он также должен совпадать.

Я пробовал $all, но это не сработало.

ответ

1

Вы можете использовать $size, чтобы ограничить размер массива:

db.test.find({ 
    "people": { $all: [ 'james', 'john', 'candy' ], $size: 3 } 
}) 
+0

испытанной, это работа –

0

В качестве решения вашей проблемы, пожалуйста, попробуйте запустить следующий запрос в MongoDB.

db.getCollection('collection').find({"people":{$all:[ 'james', 'john', 'candy' ]}}) 

Этот запрос будет выполнять точное соответствие элементов массива, независимо от их порядка