Подтвердить что ты не робот

Как обновить, если существует, иначе вставить новый документ?

Как обновить, если существует, иначе вставить новый документ в javascript/node.js? Я получаю как параметр для словаря функции, если словарь содержит _id, должен обновляться, иначе вставить на удаленный сервер (у меня есть соединение с удаленным сервером через mongoose, и у меня есть схема Person, которую я хочу вставить/обновить).

4b9b3361

Ответ 1

В Mongoose вы используете Person.update в документации. Чтобы создать документ, если он еще не существует, вам необходимо передать { upsert : true } в хэш-настройках параметров по умолчанию false.

то есть.

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

Ответ 2

collection.update с upsert:true. См. Также здесь.

Ответ 3

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

Например, отсюда:

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

Ответ 4

Для питона:

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)