Mongodb版本3+:仅在不存在新文档并获取结果时如何插入它
我尝试了数十种解决方案,但这些解决方案均无效,其中大多数已弃用。
我有一个包含这样的文档的集合:
_id: 5d99ef3285c93711828cd15d
code: 1234
name: "Foo"
surname: "Bar"
address: "That street"
phone: 1234567
仅当不存在具有相同code
的文档时,我才想插入新文档。
我最近的尝试是这样:
const result = await db.collection('users').findOneAndUpdate(
{ code: user.code },
{
$setOnInsert: user,
},
{
upsert: true,
}
);
但我得到E11000重复键错误集合 ...
updateOne()
返回相同的错误; update()
已弃用...
因此,如何仅添加新文档并获得结果(如果已添加文档,则为true;如果已经存在,则为false)?
谢谢。
回答如下:您仍然可以像这样运行查询;
document = db.collection('users').findOne({code:userCode});
if(document == null){
//document doesn't exists so you can use insertOne
}
else{
// document exists, sou you can update
}
虽然效率不高,但可以完成工作。