使用动态键将数据推送到MongoDB数组

4

我将尝试使用动态键推送数据

数据库结构:

{
    "obj1":{
      "array":[
       {
        "field1":"text1"
       },
       {
        "field2":"text2"
       }
      ]
    },
    "id":123;
 },
 {
    "obj2":{
      "array":[
       {
        "field1":"text1"
       },
       {
        "field2":"text2"
       }
      ]
    },
    "id":1234;
 }

我正在尝试将变量用作映射路径中的键:

var a = 'obj2';
db.collection('fooCollection').update({'id':1234},{$push:{a.array:{  "field3":"text3"}}});

如果我这样做:

db.collection('fooCollection').update({'id':1234},{$push:{"obj2.array":{ "field3":"text3"}}});

这个功能可以正常工作,但我非常需要使用动态密钥。


1
你能整理一下你的例子吗?你的“工作”示例根本不是有效的查询(我猜测可能缺少几个"和一个:,但我不确定)。 - Aaron Dufour
固定的,匆忙制作的,抱歉。 - Vlad
你需要通过编程来创建密钥;我认为你不能从字面上的字符串连接中创建密钥。 - Paul
1个回答

5
那不能使用对象字面量完成,试试这个:
var a = 'obj2';

var pushObj = {};
pushObj[a + '.array'] = { "field3": "text3" };

db.collection('fooCollection').update({ 'id':1234 }, { $push: pushObj });

奇怪的是,我5小时前就试图做到这一点,然后在收到你的消息后决定重新检查。结果它居然成功了 -_- - Vlad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接