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
包含两个元素(text
和here
)的文档:
db.things.find( words: $all: ["text", "here"] );
或其中任何一个(text
或 here
)使用$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通过***属性和嵌套数组键查找文档,并返回匹配文档的一部分