1

mongodb update メソッドに少し問題があります。これは私の(簡略化された)スキーマです:

{
   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 に設定すると、同じことが行われます。)

4

1 に答える 1

4

次を使用する必要があります。

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

なぜ使用しないのか疑問に思っています$unsetか?

于 2013-03-01T10:22:07.787 に答える