我有一组文档,如下所示:
{
"AAA": 1,
"BBB": [
{
"CCC": 1,
"DDD": [1,2,3]
}
]
}
如何将新的子文档({"CCC": 1, "DDD": []}
(插入到";BBB";数组,如果不存在具有{"CCC":1}密钥对的对象?
您实际上可以通过以下几种方法来实现这一点,最简单的方法是如果文档具有CCC: 1
,则使查询"失败"匹配,如下所示:
db.collection.updateOne(
{
_id: docId,
'BBB.CCC': {
$ne: 1,
},
},
{
'$push': {
BBB: {
'CCC': 1,
'DDD': [],
},
},
},
);
现在,如果文档的BBB.CCC
值为1,那么更新将找不到要更新的文档,并且不会像您预期的那样更新任何内容。
Mongo游乐场