最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin8浏览0评论

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

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
}

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

发布评论

评论列表(0)

  1. 暂无评论