Meteor,MongoDB保存一个关联数组

时间:2014-07-31 02:48:15

标签: arrays mongodb meteor

我有一个关于如何创建/添加到以下架构的问题。最初,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可能还不支持这些内容)。谢谢你的帮助!

1 个答案:

答案 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"})}
);