Mongodb найти несколько элементов массива
Если у меня такая запись,
{
"text": "text goes here",
"words": ["text", "goes", "here"]
}
Как я могу сопоставить несколько слов из него в MongoDB? При подборе одного слова я могу это сделать;
db.find({ words: "text" })
Но когда я пытаюсь это сделать для нескольких слов, это не работает;
db.find({ words: ["text", "here"] })
Я предполагаю, что с помощью массива он пытается сопоставить весь массив с тем, который находится в записи, а не подбирать индивидуальное содержимое.
Ответы
Ответ 1
В зависимости от того, пытаетесь ли вы найти документы, где words
содержит оба элемента (text
и here
), используя $all
:
db.things.find({ words: { $all: ["text", "here"] }});
или любой из них (text
или here
) с помощью $in
:
db.things.find({ words: { $in: ["text", "here"] }});