[英]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.