sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb:indsæt hvis ikke eksisterer

Det lyder som om du vil lave en "upsert". MongoDB har indbygget support til dette. Send en ekstra parameter til dit update()-kald:{upsert:true}. For eksempel:

key = {'key':'value'}
data = {'key2':'value2', 'key3':'value3'};
coll.update(key, data, upsert=True); #In python upsert must be passed as a keyword argument

Dette erstatter din if-find-else-update blok helt. Den indsættes, hvis nøglen ikke findes, og opdateres, hvis den gør det.

Før:

{"key":"value", "key2":"Ohai."}

Efter:

{"key":"value", "key2":"value2", "key3":"value3"}

Du kan også angive, hvilke data du vil skrive:

data = {"$set":{"key2":"value2"}}

Nu vil dit valgte dokument kun opdatere værdien af ​​"key2" og lade alt andet være urørt.



  1. BadValue Ugyldig eller ingen bruger-lokalitet angivet. Sørg for, at miljøvariablerne LANG og/eller LC_* er indstillet korrekt

  2. Sådan overvåger du dine databaseservere ved hjælp af ClusterControl CLI

  3. Hvordan forespørges dokumenter ved hjælp af _id felt i Java mongodb driver?

  4. Understøtter azur ting som mongodb og redis?