繁体   English   中英

MongoDB:在数组中查找元素

[英]MongoDB: Find an element in an array

我的MongoDB集合中有一个简单的数组:

"_id": "5669b4930874f8d01f7676da", "cars": ["BMW", "Audi", "VW"]

我现在要检查该文档中是否包含“ Audi”。 我在这里已经阅读了有关数组的所有问题,但它们都集中在内部对象的数组上,在这里情况并非如此。

db.collectionName.find({ cars: {$eq: "Audi"} })

不起作用(不返回任何文档)。

编辑:这是我自己的愚蠢,请参阅下面有关最佳解决方案的评论。 因此,以上查询始终有效。 好吧,正如他们所说的,问题总是出在键盘前面;-)

都没有:

db.collectionName.find({ $elemMatch: { cars: "Audi" }})

它实际上导致以下错误消息:

error: {
"$err" : "Can't canonicalize query: BadValue unknown top level operator: $elemMatch",
"code" : 17287

要么:

db.collectionName.find({ cars: { $in: "Audi" }})

这导致以下错误:

error: {
"$err" : "Can't canonicalize query: BadValue $in needs an array",
"code" : 17287

通过MongoDB Shell在MongoDB 2.6.7版中进行了测试。 谢谢你的帮助!

您可以简化:

db.collectionName.find({ cars: "Audi" })

应该工作完美。

db.collectionName.find({ cars: { $in: ["Audi"] }})

也可以工作,但是首先要简单些。

这个查询似乎对我有用:

 db.cars.find({cars: {$elemMatch:{$eq:"BMW"}} })

结果

{ "_id" : ObjectId("5669ca2ff0fbefa0650e5fb6"), "cars" : [ "Audi","BMW", "Honda" ] }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM