如果存在多级嵌套字段值,则需要将其递增,否则创建完整的嵌套字段对象结构。
我的文档结构
Doc1 {
_id:ObjectId(),
myField: {
nested:{
x: 5,
y: 10,
z: 20
}
}
}
目标说明: 我需要一种方法来编写一个单一的查询:
- 如果myField存在: 将嵌套字段myField.nested.x的值增加10。
- 如果myField不存在: 创建以下字段,并将初始值设为Doc1中给出的相同值。
尝试和解释:
db.collection('collectionName').findOneAndUpdate(
{_id:"userId","myField" : { $exists : true }},
{$inc:{'myField.nested.x':10}
})
这样,如果嵌套字段存在,我可以递增它,但是如果不存在,我不能将myField设置为与Doc1相同。
虽然我可以在我的NodeJs回调中使用另一个查询来实现所需的行为,但我需要一个单一查询的优雅解决方案。
我正在使用MongoDB版本4.0.4,谢谢提前。