我只是尝试使用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是表示您要修改或添加的字段的变量。

10-06 03:37