「ノード」の配列のサブオブジェクトがあります
これが私のMongoドキュメント構造です
db.nodes.find()
{ _id : ObjectId("skipped"),
nodeid : "node1"
nodes : [
{ nodeid : "node11"
sku : [
"aaa",
"bbb",
"ccc"]
},
{ nodeid : "node12"
sku : [
"bbb",
"ddd"]
}]
}
{ _id : ObjectId("skipped"),
nodeid : "node2"
nodes : [
{ nodeid : "node21"
sku : [
"aaa",
"bbb",
"ddd"]
}]
}
私が使う:
db.nodes.update({'nodes.sku': 'bbb'},{$pull: {'nodes.$.sku':'bbb'}}, {multi: 1})
結果があります:
db.nodes.find()
{ _id : ObjectId("skipped"),
nodeid : "node1"
nodes : [
{ nodeid : "node11"
sku : [
"aaa",
"ccc"
]
},
{ nodeid : "node12"
sku : [
"bbb",
"ddd",
]
}
]
}
{ _id : ObjectId("skipped"),
nodeid : "node2"
nodes : [
{ nodeid : "node21"
sku : [
"aaa",
"ddd"
]
}
]
}
「node1.node12」にはまだオブジェクト「bbb」があります
私は使用してみます:
db.nodes.update({'nodes': {$elemMatch: {'sku':'bbb'}}},{$pull: { nodes: {'sku':'bbb'}}}, {multi: 1})
そして結果があります:
db.nodes.find()
{ _id : ObjectId("skipped"),
nodeid : "node1"
nodes : [
]
}
{ _id : ObjectId("skipped"),
nodeid : "node2"
nodes : [
{ nodeid : "node21"
sku : [
"aaa",
"ddd"
]
}
]
}
「node1」のすべてのデータを失いました
「node2.node12」からのプルオブジェクトを修正します
いくつかの提案
ありがとう、ヴァシリ