mongoDB : Erzeugen Einer ObjectId Für Jedes Neue Kind Hinzugefügt, Um Das Array-Feld

mongodb 2.1.4(Die Knoten-Treiber)

Ich versuche momentan zum erstellen einer neuen ObjectID für jede Nachricht, die ich einfügen in ein array(der array wird ein Filialdokument).

Ich Abbildung diese Art und Weise Alle CRUD-Operationen können leicht durchgeführt werden, auf jede Nachricht im array.

Zum Beispiel:

Die "threads" - collection(Hinweis - Eine ObjectId für jede Nachricht)

{
    "_id": ObjectId("1234132413424123"), //A thread id
    messages:[
        {
            _id :ObjectId("134124412341234"),//A message id
            "message":"MongoDB is my friend"

        },
        {
            _id :ObjectId("534124412342377"),
            "message":"MongoDB is my friend too"

        },
        ...
    ]
},
{
    "_id": ObjectId("22341324134224234"),
    messages:[
        {
            _id :ObjectId("8341244123411235"),
            "message":"Something clever"

        },
        {
            _id :ObjectId("134124412342376"),
            "message":"blah blah blah"

        },
        ...
    ]
}

Was ich gerade jetzt tun:

var query = {};

query["_id"] = new ObjectID(threadID);

var update = {$push: {}};    //I write the update object externally just for aesthetics

update.$push["messages"] = newMessage; 

var threadsCollection = db.collection('threads');
threadsCollection.findOneAndUpdate(query,update, function (err, result) {
    if (err) {
        console.log(err);
    } 
    db.close();
});

Problem:

Im Gegensatz zu "insert" für Sammlungen, ein update mit $push nicht erstellen
neue ObjectId für jede Nachricht, die dem array Hinzugefügt.

Frage:

Gibt es einen standard-Weg der Schaffung einer ObjectID während eine $push in
das child-array? Oder sollten wir Sie einfach erstellen Sie manuell eine ObjectID und fügen Sie es dem Kind vorher?

InformationsquelleAutor Nick Pineda | 2016-01-28
Schreibe einen Kommentar