如何创建新文档“如果不存在”并使用MongoDB NodeJS本机驱动程序返回新文档

时间:2016-06-20 17:05:33

标签: node.js mongodb crud

我想创建一个新文档(如果它不存在)并在创建后返回新文档,但是如果文档已经存在,我希望抛出异常。

我认为我这样做的方式似乎是hackish,有更好的方法吗?

var query = { name: 'guaranteed to be unique' }
var new_doc = { ... }
var col = // the Mongo collection we're using

col.updateOne(
    query,
    new_doc,
    {upsert: true}
)
.then(update => col.findOne({_id, update.result.upserted.pop()._id}))
.then(doc => console.log(doc))
.catch( exception => console.log('that already exists') )

1 个答案:

答案 0 :(得分:0)

经过大量搜索,我发现了一些answers in this post,但这里有一个干净的例子findOneAndUpdatereturnOriginal属性集false

col.findOneAndUpdate(
    query,
    new_doc,
    { upsert: true, returnOriginal:false }
)
.then(update => update.value)
.then(doc => console.log(doc))