Node.js MongoDB updateOne无法正常工作

时间:2018-10-20 00:58:49

标签: javascript node.js mongodb

请帮助我修复代码。

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:

1 个答案:

答案 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();
});