Подтвердить что ты не робот

Mongodb найти несколько элементов массива

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

или любой из них (text или here) с помощью $in:

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