sql >> Databasteknik >  >> NoSQL >> MongoDB

lägga upp ett fält i ett underdokument i en array efter index i MongoDB

Du vill använda update kommando på din samling enligt följande (exempel):

db.collection.update(
    { "my_array.title" : "title_one" },
    { $inc : { "my_array.$.click_number" : 1 } }
);

Vad hände just?

På den första parametern i update du definierar en query för att matcha dokument som du vill uppdatera. Vi söker efter en egenskap som heter title inuti arrayen som heter my_array . Du kan matcha mot body eller email naturligtvis genom att ändra punktnotationen till:"my_array.email" .

Den andra parametern definierar uppdateringen, ändringen som ska tillämpas. Vi har en $inc operatör för att öka fält, som vi använder i detta uttalande. query väljer ett dokument med det matchade matriselementet. Du kan nå detta matchade arrayobjekt med $ notation. "my_array.$" väljer det matchade arrayelementet, som har en title , email och body . Om du försöker ge värde till ett icke existerande fält, kommer MongoDB att göra det åt dig. Om fältet inte finns, $inc ställer in fältet till det angivna beloppet. $inc operatören accepterar positiva och negativa inkrementella belopp.

Läs mer om uppdateringskommandot.

Ett annat exempel:

db.collection.update(
    { _id : "john", "my_array.email" : "email" },
    { $inc : { "my_array.$.click_number" : 1 } }
);



  1. Redis-servern kan inte köra mer än 1024M maxheap

  2. MISCONF Redis är konfigurerad för att spara RDB-ögonblicksbilder

  3. Använd $strLenCP med Spring Data MongoDB

  4. Fjäderdata MongoDb:MappingMongoConverter remove _class