Как определить, присутствует ли массив значений в массиве в коллекции mongodb? - PullRequest
2 голосов
/ 29 декабря 2010

У меня есть некоторый код, который выглядит следующим образом (все в интерпретаторе mongodb):

var needed_skills = ['mongodb','javascript','c++','php']

db.applicants.save( { name:'joe', skills:['c++','ruby','css'] } );
db.applicants.save( { name:'peter', skills:['mongodb','javascript','c++','php','html'] } );

Как мне сделать запрос, который находит заявителя со всеми необходимыми навыками? В основном я ищу документы, в которых присутствуют все члены массива в данном массиве. Я знаю, что вы можете сделать что-то подобное, чтобы найти, если вы хотите, чтобы он нашел одного участника:

db.applicants.find({skills:'mongodb'})

Однако это соответствует только одному, где, как я хочу, чтобы соответствовать всем ...

Любая помощь будет принята с благодарностью.

1 Ответ

4 голосов
/ 29 декабря 2010

Вы хотите использовать $all:

db.applicants.find({skills: {$all: ['mongodb','javascript','c++','php','html']} });

или

var needed_skills = ['mongodb','javascript','c++','php']

db.applicants.find({skills: {$all: needed_skills} }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...