Nie wiem dlaczego, ale jeśli spróbuję zaktualizować istniejące pole przy użyciu metody $set
, wszystkie istniejące pola zostaną zastąpione w tym samym kontekście.Zaktualizuj zbiór meteorów bez usuwania lub przesłonięcia istniejących pól
Na przykład. Załóżmy, że mam istniejącą kolekcję z następującymi polami.
Nazwa kolekcji: Ticket
{profile: {name: "Test", placement: 1}, requestor: _id}
Gdy próbuję dodać pola/aktualizacji do tej kolekcji tak:
var ticket = Meteor.tickets.findOne({_id: ticketID});
if(ticket){
Meteor.users.update(ticket, {
$set: profile: {name: "Test2", new_fields: "value"}
});
}
Kolekcja zostanie zaktualizowany i nazwisko zmiany pola, ale placement jest usuwany i już tam nie ma. Jest to również prawdą, jeśli usunę pole name
. W jaki sposób właściwie aktualizujemy kolekcję meteorów bez ciągłego powtarzania tej samej struktury?
$set: {"profile.name": "Test2", "profile.new_fields": "value"}
Tj:
Tak samo, jak ty to robiłeś, znalazłem to. http://stackoverflow.com/questions/10290621/how-do-i-partially-update-an-object-in-mongodb-so-the-new-object-will-overlay. Przyjmę za kilka minut. Dzięki – Warz