我是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
我非常感谢您提供的帮助。
一切顺利,
本
答案 0 :(得分:0)
根据上面提到的描述作为解决方案,使用 findAndModify mongo shell方法
它将修改文档并返回修改后的文档,其中 upsert 作为参数,如果未找到匹配项,则将新文档插入mongo集合,否则如果找到匹配项将对文档执行更新操作
findAndModify 也接受 new 作为参数,当true返回修改后的文档时,如果找到匹配,或者当新设置为false时返回原始文档,否则如果找不到匹配则返回插入的文档
有关 findAndModify 方法的详细说明,请参阅以下网址中的文档
https://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/