【问题标题】:How to update a mongo collection using a variable as a key如何使用变量作为键更新 mongo 集合
【发布时间】:2015-10-06 03:22:01
【问题描述】:

假设以下文档结构,如何使用变量来定义指定的键?价值观可以是观察性的、超现实的、物理的、其他的。

如果需要使用对象来创建更新,请说明如何。如果重组文档会更好,那么欢迎提出建议。

    Comedians.update(
      { "id":row[0]},
      { 'id':row[0],
        'surname':row[1],
        'firstName':row[2],
        'observational':{ //<--key generated dynamically (observational/ surreal/ physical)
          'routines':{
            'year1':{
              'club1':row[6],
              'club2':row[8],
              'club3':row[10]
            },
            'year2':{
              'club1':row[14],
              'club2':row[16],
              'club3':row[18]
            },
            'year3':{
              'club1':row[20],
              'club2':row[22],
              'club3':row[24]
            }
          },
          'jokes':{
            'year1':{
              'club1':row[7],
              'club2':row[9],
              'club3':row[11]
            },
            'year2':{
              'club1':row[13],
              'club2':row[15],
              'club3':row[17]
            },
            'year3':{
              'club1':row[19],
              'club2':row[21],
              'club3':row[23]
            }
          }, 
        } 
      },
      {upsert: true},
      function(error,result){
        if ( error ) console.log ( error ); 
        if ( result ) console.log ( result );
      });

关于 SO 的其他答案不使用嵌入式文档,这似乎是一个问题。

【问题讨论】:

  • 请用您的尝试更新您的问题
  • @mvanio 这似乎是thisthis 的副本。这些是回答你的问题还是你问别的问题?
  • @DavidWeldon 尝试了这些,认为我不明白如何将解决方案应用于嵌入式文档。或者文档结构可能已关闭。不错的博客顺便说一句,已经多次提到您的“常见错误”。非常有用。

标签: javascript mongodb meteor


【解决方案1】:

这是基本的javascript。您需要使用代码创建用于更新的对象,而不是将其写为常量。这是一种方法:

var newObj = { 
    'id':row[0],
    'surname':row[1],
    'firstName':row[2],
};
var myVariable = "observational";  //<--key generated dynamically (observational/ surreal/ physical)
newObj[myVariable] = {
    'routines':{
        'year1':{
            'club1':row[6],
            'club2':row[8],
            'club3':row[10]
        },
        'year2':{
            'club1':row[14],
            'club2':row[16],
            'club3':row[18]
        },
        'year3':{
            'club1':row[20],
            'club2':row[22],
            'club3':row[24]
        }
    },
    'jokes':{
        'year1':{
            'club1':row[7],
            'club2':row[9],
            'club3':row[11]
        },
        'year2':{
            'club1':row[13],
            'club2':row[15],
            'club3':row[17]
        },
        'year3':{
            'club1':row[19],
            'club2':row[21],
            'club3':row[23]
        }
    }, 
};

Comedians.update(
    { "id":row[0]},
    newObj,
    {upsert: true},
    function(error,result){
        if ( error ) console.log ( error ); 
        if ( result ) console.log ( result );
    }
);

【讨论】:

  • 谢谢。对此进行了测试,它按预期工作。 FWIW 我很接近。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2018-05-18
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
相关资源
最近更新 更多