mongodb находит по нескольким элементам массива - PullRequest
89 голосов
/ 16 ноября 2011

Если у меня есть такая запись;

{
  "text": "text goes here",
  "words": ["text", "goes", "here"]
}

Как мне сопоставить несколько слов из него в MongoDB? При сопоставлении одного слова я могу сделать это;

db.find({ words: "text" })

Но когда я пробую это для нескольких слов, это не сработает;

db.find({ words: ["text", "here"] })

Я предполагаю, что, используя массив, он пытается сопоставить весь массив с тем, который содержится в записи, а не сопоставлять отдельное содержимое.

1 Ответ

146 голосов
/ 16 ноября 2011

Зависит от того, пытаетесь ли вы найти документы, где words содержит оба элемента (text и here), используя $all:

db.things.find({ words: { $all: ["text", "here"] }});

илилюбой из них (text или here), используя $in:

db.things.find({ words: { $in: ["text", "here"] }});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...