MongoDB:在数组

时间:2015-12-10 18:30:06

标签: arrays mongodb

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

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

我现在想检查“奥迪”是否在该文件中。我在这里阅读了关于数组的所有问题,但是他们全都关注内部对象的数组,这不是这里的情况。

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。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

你可以简化:

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

应该完美无缺。

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

也可以工作,但首先更简单。

答案 1 :(得分:0)

这个查询似乎对我有用:

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

结果

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