理由はわかりませんが、$set
メソッドを使用して既存のフィールドを更新しようとすると、既存のフィールドは同じコンテキストで置き換えられます。既存のフィールドを削除または上書きしないでメテオコレクションを更新する
たとえば、次のフィールドを持つ既存のコレクションがあるとします。私はこのようなこのコレクションに/更新フィールドを追加しようとするとTicket
{profile: {name: "Test", placement: 1}, requestor: _id}
:コレクションの
名前
var ticket = Meteor.tickets.findOne({_id: ticketID});
if(ticket){
Meteor.users.update(ticket, {
$set: profile: {name: "Test2", new_fields: "value"}
});
}
コレクションが更新され、名前フィールドの変更が、配置が削除されますもはやそこにはありません。これは、name
フィールドを削除した場合も同様です。どのようにして同じ構造を何度も何度も渡し続けることなく、流星群を正しく更新するにはどうすればよいですか?
$set: {"profile.name": "Test2", "profile.new_fields": "value"}
すなわち:
あなたがこれを投稿したのと同じように、私はこれを見つけました。 http://stackoverflow.com/questions/10290621/how-do-i-partially-update-an-object-in-mongodb-so-the-new-object-will-overlay。数分で受け入れます。ありがとう – Warz