使用动态键推送到 mongodb 数组

Vla*_*lad 4 javascript mongodb node.js express

我正在尝试通过动态键推送数据

数据库结构:

{
    "obj1":{
      "array":[
       {
        "field1":"text1"
       },
       {
        "field2":"text2"
       }
      ]
    },
    "id":123;
 },
 {
    "obj2":{
      "array":[
       {
        "field1":"text1"
       },
       {
        "field2":"text2"
       }
      ]
    },
    "id":1234;
 }
Run Code Online (Sandbox Code Playgroud)

我尝试使用变量作为地图路径中的键:

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

如果我做:

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

它有效,但我非常需要使用动态密钥。

Aar*_*our 5

这不能用对象文字来完成。尝试这个:

var a = 'obj2';

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

db.collection('fooCollection').update({ 'id':1234 }, { $push: pushObj });
Run Code Online (Sandbox Code Playgroud)