Wenn Sie nur ein Feld zu aktualisieren versuchen, sollten Sie die $ set-Operator verwenden. Aber wenn Sie das Dokument ersetzen möchten, hatte ich das gleiche Problem mit Mongo und Meteor. Ich habe in der Mongo-Dokumentation gefunden, dass Sie kein $ -Operator verwenden und Feld/Wert-Paare übergeben müssen:
Die folgende Operation übergibt ein Dokument, das nur Feld- und Wertepaare enthält. Das Dokument ersetzt das ursprüngliche Dokument vollständig, mit Ausnahme des Felds _id.
db.books.update({ item: "XYZ123" },
{
item: "XYZ123",
stock: 10,
info: { publisher: "2255", pages: 150 },
tags: [ "baking", "cooking" ]
})
https://docs.mongodb.com/manual/reference/method/db.collection.update/#example-update-replace-fields
Aber beide in Robomongo und Meteor Methode bekam dies das entfernte Dokument.
Der einzige Weg, den ich gefunden habe, ist, den Operator $ set zu verwenden und jedes Feld zu ersetzen. Dies würde aber versuchen, das Mongo ‚_id‘ zu aktualisieren, so dass ich denke, ist nur eine Abhilfe ...
db.books.update({ item: "XYZ123" },
{
$set: {
item: "XYZ123",
stock: 10,
info: { publisher: "2255", pages: 150 },
tags: [ "baking", "cooking" ]
}
})
Was soll ich hier fehlt? :/
Was meinst du mit "record"? Soll es sich um Dokumentfelder oder das gesamte Dokument handeln? Nun, wussten Sie, dass Ihre Aktualisierungsabfrage keinen "$ set" oder "$ unset" Operator hat? – felipsmartins
Sie * Ersetzte * ein Dokument, das mit '{Name:" IsSomeCompany "}' Kriterien mit '{ButtonValues: [0, 1, 2]}' übereinstimmt. Wenn Sie Teile des abgeglichenen Dokuments aktualisieren möchten, verwenden Sie den Operator $ set. –
In diesem Fall spielt das verwendete Werkzeug keine Rolle. Ich verwende diese Syntax zum Aktualisieren mehrerer Dokumente. . Db.getCollection ('YourDocument') update ( { "matchingField": "matchingValue"}, {$ gesetzt: { "Feld": "Wert"} }, { multi: true} ) – Hamedz