10 Stimmen

mongoose. Aktualisierung des eingebetteten Dokuments im Array

In der eine offizielle Mungo-Site Ich habe herausgefunden, wie ich eingebettetes Dokument nach _id in Array entfernen kann:

post.comments.id(my_id).remove();
post.save(function (err) {
   // embedded comment with id `my_id` removed!
});

Ich bin daran interessiert, wie kann ich aktualisieren, anstatt diese zu entfernen?

17voto

guiomie Punkte 4708

Sie sollte in etwa so aussehen:

    YOURSCHEMA.update(
        { _id: "DocumentObjectid" , "ArrayName.id":"ArrayElementId" },
        { $set:{ "ArrayName.$.TheParameter":"newValue" } },
        { upsert: true }, 
        function(err){

        }
    );

In diesem Beispiel suche ich ein Element mit einem id-Parameter, aber es könnte der aktuelle _id-Parameter vom Typ objectId sein.

Siehe auch: MongooseJS Doc - Set aktualisieren y Ähnliche SO-Frage

11voto

Cris-O Punkte 4921

Sie könnten Folgendes tun

var comment = post.comments.id(my_id);
comment.author = 'Bruce Wayne';

post.save(function (err) {
    // emmbeded comment with author updated     
});

4 Stimmen

Das Speichern scheint nicht zu funktionieren, wenn ich eingebettete Dokumente aktualisiere - und das Markieren als geändert macht es auch nicht ungültig.

0voto

Kyle Zinter Punkte 53

Aktualisierung auf die neuesten Dokumente zum Umgang mit Unterdokumenten in Mongoose. http://mongoosejs.com/docs/subdocs.html

var Parent = mongoose.model('Parent');
var parent = new Parent;

// create a comment
parent.children.push({ name: 'Liesl' });
var subdoc = parent.children[0];
console.log(subdoc) // { _id: '501d86090d371bab2c0341c5', name: 'Liesl' }
subdoc.isNew; // true

parent.save(function (err) {
  if (err) return handleError(err)
  console.log('Success!');
});

0 Stimmen

Dies scheint das eingebettete Dokument nicht zu aktualisieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X