如果存在如何更新,否则插入新文档?

Posted

技术标签:

【中文标题】如果存在如何更新,否则插入新文档?【英文标题】:How to update if exists otherwise insert new document? 【发布时间】:2014-02-16 01:00:18 【问题描述】:

如果存在则如何更新,否则在 javascript/node.js 中插入新文档? 我将作为函数字典的参数,如果字典包含 _id 应该更新,否则在远程服务器上插入(我通过猫鼬与远程服务器连接,并且我有要插入/更新的 Person 模式)。

【问题讨论】:

【参考方案1】:

collection.updateupsert:true。另见here。

【讨论】:

常见的答案还是可以有具体例子的。【参考方案2】:

在 Mongoose 中,您将使用 Person.update per the documentation。为了创建一个不存在的文档,您需要在选项哈希中传递 upsert : true ,因为它默认为false

Person.update(  name : 'Ted' ,  name : 'Ted', age : 50 ,  upsert : true , callback );

【讨论】:

更新已被弃用。请改用 updateOne、updateMany 或 bulkWrite。【参考方案3】:

[db.collection.replaceOne(filter, replacement, options)]upsert:true

例如来自here:

try     db.restaurant.replaceOne(
             "name" : "Pizza Rat's Pizzaria" ,
             "_id": 4, "name" : "Pizza Rat's Pizzaria", "Borough" : "Manhattan", "violations" : 8 ,
             upsert: true     
         ); 
    
catch (e) print(e); 

【讨论】:

【参考方案4】:

对于python:

import pymongo

client = pymongo.MongoClient("mongodb_address")
db = client.db_name
collection = db[collection_name]

# update 'data' if 'name' exists otherwise insert new document
collection.find_one_and_update("name": some_name,
                               "$set": "data": some_data,
                               upsert=True)

【讨论】:

以上是关于如果存在如何更新,否则插入新文档?的主要内容,如果未能解决你的问题,请参考以下文章

如果存在则更新,否则插入[重复]

Mongodb如何仅在不存在时插入(如果存在则不更新)?

如果存在则如何更新,否则在php mysql中插入[重复]

《MongoDB入门教程》第20篇 文档更新之UPSERT

《MongoDB入门教程》第20篇 文档更新之UPSERT

如果存在并满足多个条件,如何更新行,否则如何在 SQL Server 中插入