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