Hoe updaten als het bestaat, anders een nieuw document invoegen?

Hoe te updaten als het bestaat, anders een nieuw document invoegen in javascript/node.js?
Ik krijg als parameter om het woordenboek te laten functioneren, als het woordenboek _id bevat, moet het worden bijgewerkt, anders invoegen op een externe server (ik heb verbinding met de externe server via mangoest en ik heb een Persoonsschema dat ik wil invoegen / bijwerken).


Antwoord 1, autoriteit 100%

In Mongoose zou je Person.updateper de documentatie. Om een ​​document te maken als het nog niet bestaat, moet je { upsert : true }doorgeven in de hash van de opties, aangezien het standaard falseis.

d.w.z.

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

Antwoord 2, autoriteit 62%

collection.updatemet upsert:true. Zie ook hier.


Antwoord 3, autoriteit 17%

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

Bijvoorbeeld van hier:

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); }

Antwoord 4, autoriteit 11%

Voor 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)

Other episodes