我有一个关于如何创建/添加到以下架构的问题。最初,bankList只是一个数组;问题是我想更新bankList并添加一个关联数组元素:
"345899876543456789876544567":{
type: credit,
expirationDate: "6/6/15"
}
以便完整架构如下所示:
bankList:{
"345899876543456789876544567":{
type: credit,
expirationDate: "6/6/15"
}
}
然后我可以更新它以添加另一个元素:
bankList:{
"345899876543456789876544567":{
type: credit,
expirationDate: "6/6/15"
},
"u8y7654e65rt78y564456767997":{
type: debit,
expirationDate: "4/5/13"
}
}
我的问题是如何通过MongoDB在一个命令中使用Meteor语法(Meteor可能还不支持这些内容)。谢谢你的帮助!
答案 0 :(得分:2)
原则上,你会这样写:
Collection.update(
/* selector */,
{$set: {"bankList."+key: {type: "credit", expirationDate: "6/6/15"}}}
);
但是,对象文字中的键只能是文字,所以你必须这样做:
var setter = {};
setter["bankList."+key] = {type: "credit", expirationDate: "6/6/15"};
Collection.update(/* selector */, {$set: setter});
您可以编写如下函数:
function makeSetter(key, value) {
var setter = {};
setter[key] = value;
return setter;
}
Collection.update(
/* selector */,
{$set: makeSetter("bankList."+key, {type: "credit", expirationDate: "6/6/15"})}
);