H,
我试图更新此对象中的版本字段,但我无法使用2个嵌套的$ match进行查询。所以我想要的是获取文件ID为12和版本1的记录。
我还会问,如果mongoDB中有一个嵌套数组(如此对象),那么它是否是一个好习惯......
查询:
db.collection.find({"my_uuid":"434343"},{"item":{$elemMatch:{"file_id":12,"changes":{$elemMatch:{"version":1}}}}}).pretty()
对象:
{
"my_uuid": "434343",
"item": [
{
"file_id": 12,
"no_of_versions" : 1,
"changes": [
{
"version": 1,
"commentIds": [
4,
5,
7
]
},
{
"version": 2,
"commentIds": [
10,
11,
15
]
}
]
},
{
"file_id": 234,
"unseen_comments": 3,
"no_of_versions" : 2,
"changes": [
{
"version": 1,
"commentIds": [
100,
110,
150
]
}
]
}
]
}
谢谢
答案 0 :(得分:0)
如果您希望整个文档满足结果中返回的条件,那么我认为没关系。但是,如果要将item
和changes
的数组内容限制为仅匹配元素,则可能会出现问题。这是因为,您必须在投影中使用$ positional
运算符来限制数组的内容,并且只有一个此类运算符可以出现在投影中。因此,您将无法限制文档中多个数组的内容。