更新流星集合而不删除或覆盖现有字段

War*_*arz 5 updates mongodb meteor

我不知道为什么,但如果我尝试使用该$set方法更新现有字段,则在同一上下文中替换任何现有字段.

例如.假设我有一个包含以下字段的现有集合.

收藏名称: Ticket

{profile: {name: "Test", placement: 1}, requestor: _id}
Run Code Online (Sandbox Code Playgroud)

当我尝试向此集合添加/更新字段时,如下所示:

 var ticket = Meteor.tickets.findOne({_id: ticketID});

 if(ticket){
    Meteor.users.update(ticket, {
                        $set: profile: {name: "Test2", new_fields: "value"}
                    });
 }
Run Code Online (Sandbox Code Playgroud)

集合会更新,名称字段会更改,但展示位置会被删除,不再存在.如果我删除该name字段也是如此.我们如何正确更新流星集合而不必一遍又一遍地传递相同的结构?

Bra*_*ncy 9

这样做:

$set: {"profile.name": "Test2", "profile.new_fields": "value"}
Run Code Online (Sandbox Code Playgroud)

即你正在替换整个哈希.相反,您可以更新哈希中的字段.