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

时间:2014-01-24 21:24:31

标签: mongodb mongoose

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

4 个答案:

答案 0 :(得分:45)

在Mongoose中,您使用Person.update per the documentation。如果文档尚不存在,则需要在选项哈希中传递{ upsert : true },因为它默认为false

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

答案 1 :(得分:25)

{p} collection.updateupsert:true。另请参阅here

答案 2 :(得分:7)

带有[db.collection.replaceOne(filter, replacement, options)]

upsert:true

E.g。来自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); }

答案 3 :(得分:0)

对于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)