我有一个看起来像这样的文档集合:
{
"AAA": 1,
"BBB": [
{
"CCC": 1,
"DDD": [1,2,3]
}
]
}
仅当没有带有 {"CCC": 1} 密钥对的对象时,如何将新的子文档 ({"CCC": 1, "DDD": []}
) 插入到 "BBB" 数组中?
答案 0 :(得分:1)
您实际上可以通过多种方式执行此操作,最简单的方法是在文档具有 CCC: 1
时使查询“失败”匹配,如下所示:
db.collection.updateOne(
{
_id: docId,
'BBB.CCC': {
$ne: 1,
},
},
{
'$push': {
BBB: {
'CCC': 1,
'DDD': [],
},
},
},
);
现在,如果文档的 BBB.CCC
值为 1,那么更新将找不到要更新的文档,并且不会像您预期的那样更新任何内容。