Push-Objekt in ein array, wenn das array existiert ansonsten erstellen Sie das array mit dem Objekt in der MongoDB

Habe ich die Sammlung mit einem Dokument wie diesem:

{
    _id : "abcd",
    name : "Tom",
    myArray : [
        {
            field1 : "",
            field2 : ""
        }
    ]
},
{
    _id : "efgh",
    name : "Jerry"
}

Habe ich ein neues Objekt für myArray. Ich möchte eine Abfrage schreiben, update nur ein Dokument.

Wenn die Abfrage entspricht das Dokument mit _id : "abcd", dann schieben Sie das neue Objekt in myArray Feld:

{
    _id : "abcd",
    name : "Tom",
    myArray : [
        {
            field1 : "",
            field2 : ""
        },
        {
            //new object
        }
    ]
}

Und wenn die Abfrage entspricht mit _id : "efgh" erstellen das Feld myArray mit dem neuen Objekt-innen:

{
    _id : "efgh",
    name : "Jerry"
    myArray : [
         {
              //new object
         }
    ]
}

Wie kann ich das erreichen?

  • Was möchten Sie tun? Set "myArray" in "efgh", um den gleichen Inhalt wie "abcd"? Oder wollen Sie, um ein neues array-Element auf "abcd" und "efgh"? Es ist ein Bearbeiten link auf Ihre Frage, wo Sie können, hinzufügen von details zu machen Sie Ihre Absichten klar.
  • geändert, Frage, hoffe, Sie verstehen...
  • Noch unklar ist, was meinen Sie mit "elseif" hier. Meinst du aktualisieren "beide" Dokumente, oder sind Sie nur auswählen aktualisieren "" von den Dokumenten?
  • Nein, ich möchte nicht aktualisieren Dokument. Update nur ein Dokument zu einem Zeitpunkt.
  • Sie haben sogar versucht, hier etwas? Ich vermute nicht, denn Sie würden sehen, was passiert, wenn Sie $push ein array zu einem Dokument, wo es nicht vorhanden ist, dass es erzeugt nur das array. Wo gibt es ein bestehendes array, dann neues Dokument angehängt. Also entweder Sie haben nicht versucht, oder es fehlt noch etwas, aus Ihrer Frage, was Sie wirklich wollen, zu tun.
InformationsquelleAutor iamhimadri | 2015-08-02
Schreibe einen Kommentar