Mongo - 如果没有找到结果,则插入,否则返回找到的结果

时间:2015-11-18 06:35:14

标签: mongodb

我是mongo的新手,我希望你能帮我解决一个新手问题

我试图在一个查询中通过获取像id这样的任意内容来实现此功能:

If no found results, then insert, else just return found results

这也适用于插入批次吗?如果没有找到其中一个插入数组元素的结果,则插入,否则返回该元素以及数组中的其他元素。

到目前为止,到目前为止我所看到的每个地方都建议使用upsert(实现不同的东西)或者findAndModify(我不确定是不是太过分了) MongoDB atomic "findOrCreate": findOne, insert if nonexistent, but do not update

我非常感谢您提供的帮助。

一切顺利,

1 个答案:

答案 0 :(得分:0)

根据上面提到的描述作为解决方案,使用 findAndModify mongo shell方法

它将修改文档并返回修改后的文档,其中 upsert 作为参数,如果未找到匹配项,则将新文档插入mongo集合,否则如果找到匹配项将对文档执行更新操作

findAndModify 也接受 new 作为参数,当true返回修改后的文档时,如果找到匹配,或者当新设置为false时返回原始文档,否则如果找不到匹配则返回插入的文档

有关 findAndModify 方法的详细说明,请参阅以下网址中的文档

https://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/