mongodb通过多个数组项查找


96

如果我有这样的记录;

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

如何在MongoDB中匹配多个单词?当匹配一个单词时,我可以做到;

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

但是当我尝试多个单词时,它不起作用。

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

我猜想通过使用数组,它会尝试将整个数组与记录中的数组进行匹配,而不是匹配单个内容。

Answers:


168

取决于您是否要使用以下命令查找words同时包含两个元素(texthere)的文档$all

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

或其中一个(texthere)使用$in

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

3
这也对我有帮助,我需要它在数组中查找对象ID,在类似$ in的地方:[ObjectId(“ 4f9f2c336b810d0cf0000017”)]失败,$ in:[“ 4f9f2c336b810d0cf0000017”]起作用
jbnunn


1
这比循环数组并执行单个find()更好吗?
罗希特·奈尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.