假设以下文档结构,如何使用变量来定义指示的键?价值观可以是观察,超现实,物理,其他。
如果需要使用对象来创建更新,请说明如何。如果重组文件会更好,那么欢迎提出建议。
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上的其他答案不使用嵌入式文档,这似乎是一个问题。
答案 0 :(得分:0)
这是基本的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 );
}
);