Mongodb版本3+:仅在不存在新文档并获取结果时如何插入它

问题描述 投票:0回答:1

我尝试了数十种解决方案,但这些解决方案均无效,其中大多数已弃用。

我有一个包含这样的文档的集合:

    _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)?

谢谢。

javascript node.js mongodb mongodb-query
1个回答
0
投票

您仍然可以像这样运行查询;

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
}

虽然效率不高,但可以完成工作。

© www.soinside.com 2019 - 2024. All rights reserved.