我一直在尝试更新我拥有的一个集合。问题是,我不知道字段名称所以我依靠一些逻辑来提出字段名称。
例如
Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {
$set: {
"x" : y
}
});
其中x是字段名称。
这是我的代码
var obj = {};
obj[x] = y;
Er.update({ _id: "BCwrQEdiTr9GMmKWW" }, {$set: {obj}});
我收到此错误
更新失败:MongoError:虚线字段' ersubjects.0.English'在 ' obj.ersubjects.0.English'对存储无效。
English
是ersubjects
下的字段,所以我希望以ersubjects.0.English
的方式更新它,它适用于mongo。
为什么这不适用于流星?。
答案 0 :(得分:0)
您无法存储密钥中包含点的文档。有关说明,请参阅this answer。
你可以做的是使用lodash非常方便的_.set函数来创建你的对象,如下所示:
var obj = {};
var variableKey = 'ersubjects';
_.set(obj, [variableKey, 0, 'English], 'someValue');
现在您可以安全地将此对象存储到Mongo。