Ich habe viele Fragen zu verschachtelten Objekten durchsucht, aber alle, die ich gefunden habe, wo auf Array [s] bezogen.Verschachteltes Objekt in Mungo aktualisieren
Ich bin auf der Suche nach einer Aktualisierung einfach verschachteltes Objekt in Mungo.
Von hier http://mongoosejs.com/docs/guide.html
there is an example schema :
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
Sobald ein Dokument erstellt,
Wie kann ich die Favoriten-Nummer ändern später?
Es gibt kein Dokument für dasselbe, das ich finden könnte. Diese
ist das, was ich getan habe:
blog.findById(entityId, function(err, mainDoc){
if(err || !mainDoc) return next(err || 'Document not found');
var subDoc = mainDoc['meta'];
if(subDoc){
subDoc = _.extend(subDoc, { favs : 56 }); //_ lib already available
console.log(mainDoc.get('meta')); //Prints the updated result with favs = 56 OK
mainDoc.save(function(err, doc){
console.log(doc.get('meta')); // prints the updated results with favs = 56 OK
});
} else next('Not found');
});
Alles funktioniert Datei und alle Konsole gibt das gewünschte Ergebnis.
Aber wenn ich auf Mungo-Konsole wechseln und das Dokument abfragen, bekomme ich das aktualisierte Ergebnis nicht.
Ich weiß, es kann andere Wege geben, um das gleiche zu erreichen, aber ich suche nur, was ich in diesem bestimmten Code falsch mache.
Warum gibt die Konsole nach dem Speichern des Dokuments unübertroffene Daten aus der Datenbank?
Beim Aktivieren der Mungo-Debug-Option habe ich festgestellt, dass in der Abfrage keine solchen Daten aktualisiert werden müssen. Abfrage wird mit leerem $ set ausgelöst. {$ Satz: {}}
weiß, dass ich gut diese Antwort ist besser. aber ich wollte eigentlich herausfinden, was ich in meinem obigen Code falsch mache. – codeofnode
Wenn 'favs' eine Variable ist. Dann wie kann ich etwas wie unten erreichen? blog.findByIdAndUpdate (entityId, {$ setzen: {'meta [favs]': 56}}, Funktion (err, doc) { console.log (doc); }); –