我已经将此作为对另一个问题的评论提出,并且还在mongodb-user 上发布了一个问题。到目前为止没有任何回应,所以我求助于另一个问题。
该文档指出:
如果该字段包含一个数组,则 $in 运算符选择其字段包含一个数组的文档,该数组包含至少一个与指定数组中的值匹配的元素(例如,等)
我在用着:
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。
谢谢!