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