请帮助我修复代码。
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
var a = "2018";
var b = "December";
var c = "12";
var d = "28";
MongoClient.connect(url,{ useNewUrlParser: true },(err, client) => {
if (err){
return console.log('Unable to login to Mongo DB');
}
console.log('Connected to Mongo DB');
const db = client.db('test');
db.collection('updateTest').updateOne({_id:a},{$addToSet:{"b.c":{
"temp":d
}}},{upsert:true},(err,result) =>{
if(err){
return console.log(err);
}
console.log(JSON.stringify(result));
});
client.close();
});
这里的问题是这段代码({_id:a},{$ addToSet:{“ b.c”:
_id毫无疑问地接受了上面定义的a的值,但是我无法传递分配给b和c的值,从而导致了不希望的对象名称。
这里的目的是通过({_id:“ 2018”},{$ addToSet:{“ December.12”:
尝试了我所知道的方法,但都没有成功
{$addToSet:{`${b}.${c}`:
var e = `${b}.${c}`;
{$addToSet:{e:
答案 0 :(得分:0)
您可以使用computed object property names来实现目标:
db.collection('updateTest').updateOne({_id:a},{$addToSet:{[`${b}.${c}]:{
"temp":d
}}},{upsert:true},(err,result) =>{
if(err){
return console.log(err);
}
console.log(JSON.stringify(result));
});
client.close();
});