我已经问这是关于another问题的评论,并且在mongodb用户上也发布了question。到目前为止没有回应,所以我正在求助于另一个问题。MongoDB嵌套数组查询
的documentation状态:
如果字段保持的阵列,则在操作员将$选择 文档其字段保存包含指定数组中相匹配的值的至少一个 元素的数组(例如, 等)
我使用:
mongod --version:
db version v2.2.2, pdfile version 4.5
Thu May 30 12:19:12 git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
mongo --version:
MongoDB shell version: 2.0.4
在MongoDB中壳:
db.nested.insert({'level1': {'level2': [['item00', 'item01'], ['item10', 'item11']]}})
这里是一个要根据文档的查询工作的清单,结果他们生产:
为什么不这项工作?
> db.nested.findOne({'level1.level2.0': 'item00'})
null
为什么我需要$ all?
> db.nested.findOne({'level1.level2.0': {'$all': ['item00']}})
{
"_id" : ObjectId("51a7a4c0909dfd8872f52ed7"),
"level1" : {
"level2" : [
[
"item00",
"item01"
],
[
"item10",
"item11"
]
]
}
}
以下至少一项应该可以正常工作吗?
> db.nested.findOne({'level1.level2.0': {'$in': ['item00']}})
null
> db.nested.findOne({'level1.level2': {'$in': ['item00']}})
null
任何想法?如果查询语法不能像宣传的那样工作,我们正在考虑放弃MongoDB。
谢谢!
感谢您花时间回复,但不幸的是,您的答案都不正确。在手册的“Read”页面中,搜索“以下操作将光标返回到bios集合中的所有文档,其中数组字段contribs包含元素'UNIX':”在我的问题顶部附近的文档链接中,你可以看到$ in应该在包含数组的字段上工作。最后,您的语句“$ all正在工作,因为...”是错误的:字段中的所有值都不需要存在于查询中,但查询中的所有值都必须存在于文档的字段中。 – dgorur
感谢您为“$ all正在工作,因为......”中的更正。所以你在说$ in应该适用于数组,而且文档是这样说的。现在我很感兴趣。我会做一些实验,看看我是否知道。你在这里有一个非常有趣的问题! – AntonioOtero
我把我的发现放在另一个答案中,我希望它对你有用。 – AntonioOtero