Обновить дочерний элемент на 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);

Монго хочет назначить поле "$set", чтобы оно не работало.

Мой вопрос: как обновить поля-потомки, не удаляя весь вложенный документ "account"?

(Установка "upsert" в true делает то же самое.)

1 ответ

Решение

Вы должны использовать:

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

Просто интересно, почему ты не используешь $unset?

Другие вопросы по тегам