MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Fügen Sie ein Feld in einem Filialdokument in einem Array nach Index in MongoDB ein

Sie möchten das update verwenden Befehl für Ihre Sammlung wie folgt (Beispiel):

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

Was ist gerade passiert?

Auf dem ersten Parameter von update Sie definieren eine query um Dokumente abzugleichen, die Sie aktualisieren möchten. Wir suchen nach einer Eigenschaft namens title innerhalb des Arrays namens my_array . Sie könnten mit body übereinstimmen oder email natürlich durch Ändern der Punktnotation in:"my_array.email" .

Der zweite Parameter definiert das Update, die anzuwendende Änderung. Wir haben einen $inc Operator zum Erhöhen von Feldern, die wir in dieser Anweisung verwenden. Die query wählt ein Dokument mit dem übereinstimmenden Array-Element aus. Sie können dieses übereinstimmende Array-Element mit $ erreichen Notation. Der "my_array.$" wählt das übereinstimmende Array-Element aus, das einen title hat , email und body . Wenn Sie versuchen, einem nicht vorhandenen Feld einen Wert zuzuweisen, übernimmt MongoDB dies für Sie. Wenn das Feld nicht existiert, $inc setzt das Feld auf den angegebenen Betrag. Der $inc Operator akzeptiert positive und negative inkrementelle Beträge.

Erfahren Sie mehr über den Update-Befehl.

Ein weiteres Beispiel:

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