查找 Mongodb 文档,如果它包含 mongoose 中的数组中的元素

Posted

技术标签:

【中文标题】查找 Mongodb 文档,如果它包含 mongoose 中的数组中的元素【英文标题】:Find a Mongodb document if it contains an element in the array in mongoose 【发布时间】:2014-05-19 12:59:43 【问题描述】:

如果我在 mongodb 文档中有一个包含数组的字段,例如:

"tags" : [  "tag", "etc1",  "etc2",  "etc3" ]

如果该文档包含元素“etc1”,我是否可以选择该文档? 如果我尝试使用查询:

db.coll.find("tags" :  $elemMatch:  value0: 'etc1' )

但我需要知道元素在数组中的位置,我不知道。 我也试过:

db.coll.find("tags" :  $elemMatch: 'etc1' )

但它必须是一个对象。有没有办法做到这一点?

注意我正在使用猫鼬,但我不确定如何构建查询

【问题讨论】:

请不要发布诸如“但如果它需要是一个对象”之类的声明。请实际展示您的真实数据以及您实际尝试执行的操作。更改名称以保护无辜者,但显示您的实际需求。 【参考方案1】:

使用$in 运算符,如this question 或this other question 中所述以及mongodb docs 中所述,并且可以是accessed in mongoose。

有了它,你会得到一个看起来像这样的查询...remembering that you must pass an array when using $in:

db.coll.find("tags" : $in : ['etc1'] );

【讨论】:

【参考方案2】:

除了使用 $in 运算符,您还可以使用 $all 运算符,例如:

db.col1.find("tags":$all :["etc1"])

【讨论】:

以上是关于查找 Mongodb 文档,如果它包含 mongoose 中的数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在任意深度查找 MongoDB 字段名称

MongoDB 和 rmongodb。获取查找的大小而不是返回所有结果

mongo 介绍

高可用的MongoDB集群

mongo索引

mongoDB应用篇-mongo聚合查询