我想创建一个新文档(如果它不存在)并在创建后返回新文档,但是如果文档已经存在,我希望抛出异常。
我认为我这样做的方式似乎是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') )
答案 0 :(得分:0)
经过大量搜索,我发现了一些answers in this post,但这里有一个干净的例子findOneAndUpdate
和returnOriginal
属性集false
col.findOneAndUpdate(
query,
new_doc,
{ upsert: true, returnOriginal:false }
)
.then(update => update.value)
.then(doc => console.log(doc))