mongodb通过多个数组项查找

Posted

技术标签:

【中文标题】mongodb通过多个数组项查找【英文标题】:mongodb find by multiple array items 【发布时间】:2011-12-30 00:56:15 【问题描述】:

如果我有这样的记录;


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

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

db.find( words: "text" )

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

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

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

【问题讨论】:

【参考方案1】:

取决于您是否尝试使用$all 查找words 包含两个元素(texthere)的文档:

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

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

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

【讨论】:

这对我也有帮助,我需要它在数组中找到一个对象 ID,并且在哪里像 $in: [ ObjectId("4f9f2c336b810d0cf0000017") ] failed, $in: [ "4f9f2c336b810d0cf0000017" ]工作 您还可以在 mangodb 支持页面docs.mongodb.org/manual/core/indexes/#indexes-on-sub-documents 和docs.mongodb.org/manual/core/indexes/#multikey-indexes 中找到另一种方法 这比循环数组并执行单个 find() 更好吗? @RohitNair,当文档很大时,阅读速度会更清晰。

以上是关于mongodb通过多个数组项查找的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - 查找 - 多个集合 - 结果在一个数组中

如何在 MongoDb 的嵌入式数组中查找多个元素

通过数组对象值mongodb查找对象[重复]

MongoDB通过***属性和嵌套数组键查找文档,并返回匹配文档的一部分

MongoDB - 如何通过 Id 查找文档并找到与 ID 数组匹配的文档

如何在数组中查找数据 mongodb , nodejs