[英]Update in embedded document(Nested collection)
我有一个类似User的集合,其中User具有列表用户,而该用户具有user列表。 就像等级制度。
{
"_id" : ObjectId("55530326bc687d21783fd1ff"),
"Name" : "User 1",
"Role" : "Manager",
number:NumberLong(0),
"1" :
[
{
"_id" : ObjectId("55530326bc687d21783fd1fd"),
"Name" : "User 2",
"Role" : "Ass Manager",
number:NumberLong(0),
"1" :
[
.......
]
}
{
"_id" : ObjectId("55530326bc687d21783fd1fq"),
"Name" : "User 2",
"Role" : "Ass Manager",
number:NumberLong(1),
"1" :
[
.........
]
},
{
"_id" : ObjectId("55530326bc687d21783fd1fg"),
"Name" : "User 3",
"Role" : "Ass Manager",
number:NumberLong(2),
"1" :
[
........
]
}
],
"2" :
[
{
"_id" : ObjectId("55530326bc687d21783fd1fw"),
"Name" : "User 4",
"Role" : "Specialist",
number:NumberLong(0),
"1" :
[
.......
]
}
{
"_id" : ObjectId("55530326bc687d21783fd1fe"),
"Name" : "User 5",
"Role" : "Specialist",
number:NumberLong(1),
"1" :
[
.........
]
},
{
"_id" : ObjectId("55530326bc687d21783fd1fr"),
"Name" : "User 6",
"Role" : "Specialist",
number:NumberLong(2),
"1" :
[
........
]
}
]
}
上面只是样本的一个集合,像这样,我有近10000个文档。 我需要找到“数字”为0的集合。即使任何一个嵌入式文档的“数字”都为0,我也想要该文档。
注意:我无法告诉用户会有多少孩子。
好吧,我将假设您的每个User文档可以具有两个子用户数组(即“ 1”和“ 2”),并且您具有最大嵌套级别,例如3(这意味着嵌套用户不能具有超过2位主持人)。 顺便说一句, mongodb允许的最大嵌套级别是100 。
可能这不是您想要的:在这种情况下,您的架构设计有问题,因为
现在,让我们假装我的假设对您来说还可以。 尝试(由于我们通常不使用大写的集合名称,因此我打电话给您的集合users
):
db.users.find({$or:["1.number" : 0, "2.number" : 0, "1.1.number":0, "1.2.number":0, ..., "2.2.1.number":0, "2.2.2.number":0]})
我跳过了一些您需要添加的组合。 请注意,您不必担心数组中的位置,并且只有3个嵌套级别,对于$or
运算符来说已经有很多子句,这可能会使您确信遵循链接的最佳实践会更好。 。
面向未来读者的注意事项:OP已在注释中澄清说他实际上不需要update
,但需要find
查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.