javascript - 使用动态字段名称更新数据

标签 javascript mongodb meteor minimongo

我只是尝试用 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 对象,而不仅仅是添加新 key 。

我也试过这个:

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 是命名您要修改或添加的字段的变量。

关于javascript - 使用动态字段名称更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469362/

相关文章:

javascript - 使用javascript从表中删除行时如何防止页面刷新?

javascript - 如何将 Jquery UI 中对话框的宽度固定为窗口的 60%

javascript - 如何关闭其他子菜单并在菜单中搜索?

python - $ne 不适用于 pymongo

mongodb - hadoop 与 mongodb 和 hadoop vs mongodb

javascript - Meteor 的 Minimongo 中是否有 $ 运算符替代方案?

javascript - jQuery 使用类名查找 td 并根据值更改文本

c# - MongoDB 组到 C# API

javascript - 如何每秒增加数据库中的值

javascript - meteor js 如何将文件从服务器写入磁盘