我有下面的用户集合,我希望查找/更新查询更新嵌套数组元素。
{
_id:"000-0000-0001",
Roles :{
0000-0000-0011: //EngagementId
["0000-0000-0111", "0000-0000-0112", "0000-0000-3333"],//RoleId
"0000-0000-0012" :
["0000-0000-0121", "0000-0000-0112"]
}
},
{
_id:"000-0000-0002",
Roles :{
"0000-0000-0021" : [ "0000-0000-0222", "0000-0000-0112"],
"0000-0000-0022" : [ "0000-0000-0121", "0000-0000-0112"],
"0000-0000-0022" : [ "0000-0000-0121", "0000-0000-0112", "0000-0000-3333"]
}
}
要求:如果阵列具有0000-0000-3333和0000-0000-0112的组合,我想提取RoleId 0000-0000-3333
以下是预期结果:
{
_id:"000-0000-0001",
Roles :{
"0000-0000-0011" : ["0000-0000-0111", "0000-0000-0112"],
"0000-0000-0012" : ["0000-0000-0121", "0000-0000-0112"]
}
},
{
_id:"000-0000-0002"
Roles :{
"0000-0000-0021" : [ "0000-0000-0222", "0000-0000-0112"],
"0000-0000-0022" : [ "0000-0000-0121", "0000-0000-0112"],
"0000-0000-0022" : [ "0000-0000-0121", "0000-0000-0112"]
}
}
注意:Find/update将对Key:value起作用,或者如果它是嵌套的,则对key.key:value起作用,但在上面的例子中,我们有key.value.[values]:$pull(value),这是一个挑战。
1条答案
按热度按时间ghhkc1vu1#
数据模型需要一个复杂的
update
和一个管道。这里有一种方法。
在mongoplayground.net上试试。