2013-03-01 55 views
1

MongoDB更新方法有点问题。这是我的(简化)模式:更新MongoDB上的子元素

{ 
    profile: { 
     birthdate: "XXX", 
     city: "xxx" 
    }, 
    account: { 
     username: "...", 
     password: "....", 
     visits: 0 
    } 
} 

我已经在数据库中有2000个对象。我想通过删除用户名值匿名化数据。

我尝试这样做:

db.users.update({}, {$set: account: {username: ""}}, false, true); 

这不作品,这个查询中删除密码字段和访问。我明白为什么,但怎么办?

db.users.update({}, {account: { $set: {username: ""}}}, false, true); 

mongo想分配“$ set”字段,以至于不能工作。

我的问题是:如何更新后代字段而不删除整个“帐户”子文档?

(设置 “UPSERT” 真不相同。)

回答

4

你应该使用:

$set:{"account.username":""} 

只是想知道你为什么不使用$unset

+0

谢谢,但那不起作用 > db.users.update({},{$ set:{account.username:“”}},false,true) Fri Mar 1 11:52:21编译错误:(shell):1 SyntaxError:意外的标记。 我应该保留用户名,因为这个数据库将与其他需要知道该字段存在的人共享。但我必须隐藏现有的用户名(我会把一些随机数据) – Metal3d 2013-03-01 10:54:25

+0

我的上帝......好吧......我忘记用双引号!非常感谢 ! – Metal3d 2013-03-01 10:55:21