查找元素我有一个简单的数组在我的MongoDB集合:MongoDB的:在一个阵列
"_id": "5669b4930874f8d01f7676da", "cars": ["BMW", "Audi", "VW"]
我现在要检查,如果“奥迪”是文件内。我已经在SO上读过关于数组的所有问题,但他们都将注意力集中在内部的对象上,这里不是这种情况。
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版进行测试。谢谢你的帮助!
这是我的问题是愚蠢的。我实际上创建了这个汽车的例子,但在我的集合中,我用的是(在这里使用相同的例子)搜索“福特”,这显然不在数组中,因此我得到了0个文档。谢谢,花了30分钟试图弄清楚为什么你的工作和我的不是。 – a4xrbj1
啊,它发生;-) –