Non so perché, ma se provo ad aggiornare un campo esistente utilizzando il metodo $set
, tutti i campi esistenti vengono sostituiti nello stesso contesto.Aggiornamento raccolta meteorologica senza rimozione o sovrascrittura dei campi esistenti
Ad esempio. Supponiamo che abbia una collezione esistente con i seguenti campi.
Nome della collezione: Ticket
{profile: {name: "Test", placement: 1}, requestor: _id}
Quando si tenta di aggiungere campi/aggiornamento a questa raccolta in questo modo:
var ticket = Meteor.tickets.findOne({_id: ticketID});
if(ticket){
Meteor.users.update(ticket, {
$set: profile: {name: "Test2", new_fields: "value"}
});
}
La raccolta viene aggiornato e il nome cambia campo, ma il posizionamento viene rimosso e non ci sono più. Questo è anche vero se rimuovo il campo name
. Come aggiorniamo correttamente una raccolta di meteore senza dover continuare a passare la stessa struttura più e più volte?
Proprio come stavi postando questo, ho trovato questo. http://stackoverflow.com/questions/10290621/how-do-i-partially-update-an-object-in-mongodb-so-the-new-object-will-overlay. Accetterà in pochi minuti. Grazie – Warz