更新mongodb上的子元素

时间:2013-03-01 10:17:04

标签: mongodb mongodb-shell

我的mongodb更新方法有点问题。这是我的(简化)模式:

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

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

我试过了:

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

这不起作用,此查询删除密码字段和访问。我理解为什么,但怎么办?

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

mongo想要分配“$ set”字段,这样就不行了。

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

(将“upsert”设置为true也是如此。)

1 个答案:

答案 0 :(得分:4)

您应该使用:

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

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