我有以下示例文档结构:
{
"_id" : 1,
"distributor" : "Jackson",
"systems" : [
{
"name" : "XBOX",
"quantity" : null,
},
{
"name" : "PlayStation",
"quantity" : 10,
},
{
"name" : "Nintendo",
"quantity" : 20,
},
{
"name" : "Atari",
"quantity" : null,
},
],
"games" : [
{
"name" : "Call of Duty",
"quantity" : 5
},
{
"name" : "Super Mario Bros",
"quantity" : null,
},
{
"name" : "Madden",
"quantity" : 4,
],
"comments" : null,
"contact" : "Bill"
}
我想通过NOT NULL
增加每个1
嵌入文档的数量。到目前为止,我能够让它更新第一个找到的非空条目(在本例中为Playstation),但没有别的。
我希望的结果如下:
{
"_id" : 1,
"distributor" : "Jackson",
"systems" : [
{
"name" : "XBOX",
"quantity" : null,
},
{
"name" : "{PlayStation}",
"quantity" : 11,
},
{
"name" : "Nintendo",
"quantity" : 21,
},
{
"name" : "Atari",
"quantity" : null,
},
],
"games" : [
{
"name" : "Call of Duty",
"quantity" : 6
},
{
"name" : "Super Mario Bros",
"quantity" : null,
},
{
"name" : "Madden",
"quantity" : 5,
],
"comments" : null,
"contact" : "Bill"
}
感谢任何指导!
答案 0 :(得分:0)
如果您使用的是MongoDB 3.6或更高版本,则可以使用this。
db.col.update(
{_id: 1},
{ $inc: { "systems.$[elem].quantity": 1, "games.$[elem].quantity": 1 } },
{ arrayFilters: [ { "elem.quantity": { $ne: null } } ] });
数组过滤器只是将您的条件应用于数组的每个元素,并在该特定元素匹配时执行更新。