Я просто пытаюсь сделать что-то простое с Mongo, но это не работает:
Я хочу обновить данные в объекте типа module.xxx.yyy
тогда я попробовал много вещей, таких как:
UsersRights.upsert({
condoId: condoId,
userId: manager._id,
}, {
condoId: condoId,
userId: manager._id,
module: {
[defaultRight.xxx] : {
[defaultRight.yyy] : defaultRight.default
}
}
});
но когда я хочу добавить новый xxx
или новый yyy
, он удалит и заменит весь объект module
а не только добавит новый ключ.
Я также пробовал:
UsersRights.upsert({
condoId: condoId,
userId: manager._id,
}, {
condoId: condoId,
userId: manager._id,
["module." + defaultRight.module + "." + defaultRight.right] : defaultRight.default,
});
но сервер показывает мне ошибку вроде: MinimongoError: Key module.xxx.yyy must not contain '.'
Вам необходимо использовать следующую форму:
YourCollection.upsert({
_id: id, (can be other selectors as well)
}, {
$set: setter
});
Setter - это объект, который вы создаете до и должен иметь следующую форму:
const setter = {};
setter['${#1Level}.${#2Level}'] = data;
Где #1Level
& #2Level
2Level - это vars, называющие поля, которые вы хотите изменить или добавить.