Javascript Node.js-Mongodb-Mongoose/Can';t将数组字符串传递到$push feld中

Javascript Node.js-Mongodb-Mongoose/Can';t将数组字符串传递到$push feld中,javascript,node.js,database,mongodb,mongoose,Javascript,Node.js,Database,Mongodb,Mongoose,因此,我试图将每个数组的不同索引推入$push调用中,以填充mongodb服务器,但是我无法将调用特定于我尝试访问的数组 数据库中的IP地址和数组名需要设置为初始数组 //Team IP Info var teamIps = [ '8.8.8.8', '8.8.8.9', '8.8.8.8', '8.8.8.8', '8.8.8.8', ] var boxNames = [ 'Linux1', 'Linux2', 'Windows1

因此,我试图将每个数组的不同索引推入$push调用中,以填充mongodb服务器,但是我无法将调用特定于我尝试访问的数组

数据库中的IP地址和数组名需要设置为初始数组

//Team IP Info
var teamIps = [
    '8.8.8.8',
    '8.8.8.9',
    '8.8.8.8',
    '8.8.8.8',
    '8.8.8.8',
]
var boxNames = [
    'Linux1',
    'Linux2',
    'Windows1',
    'Windows2',
    '98',
]
这是$push调用的代码

for (let index = 0; index < teamIps.length; index++) {
    var hostIn = teamIps[index];
    const boxName = boxNames[index];
    const liTest = 'services.0.ICMP_Linux1'
    var db_base = 'services.0.ICMP_';
    var db_index = db_base.concat(boxName);
    console.log('Inital : ' + boxName)

    //This should work and makes life easier but I cant append the db_index string into the mongoose push call

    var result = await session.pingHost(hostIn, function (error, hostIn, sent, rcvd) {
        var ms = rcvd - sent;
        var db_base = 'services.0.ICMP_';
        var db_index = db_base.concat(boxName).toString();
        console.log(typeof db_index)
        if (error){
            var output = hostIn + ": " + error.toString()
            Team.findOneAndUpdate(
                { name: name }, 
                {$push: {db_index :{ timeStamp: epochTime , status: false , error: error.toString()} }},
                function(err,suc){
                    if(err){
                        console.log(err)
                    }
                    else{
                        console.log(hostIn + ' : ' + db_index + " : " + output)
                    }
                });
            // res.send({
            //     result: output
            // })
        }
        else{
            var output = hostIn + ": Alive (ms=" + ms + ")"
            Team.findOneAndUpdate(
                { name: name }, 
                {$push: {db_index :{ timeStamp: epochTime , status: true , speed: ms} }},
                function(err,suc){
                    if(err){
                        console.log(err)
                    }else{
                        console.log(hostIn + ' : ' + db_index + " : " + output)
                    }
                });
            // res.send({
            //     result: output
            // })
        }
    });
我希望能够将db_索引更改为数组中的每一个,但它始终默认为实际单词db_索引

我似乎不知道如何将字符串传递到此调用中而不失败

一个有效的电话看起来像这样

{$push: {'services.0.ICMP_Linux1':{ timeStamp: epochTime , status: false , error: error.toString()} }},

在数据库端,一切都可以工作,当手动通过此调用传递时,一切都可以工作。

您可以使用计算属性名:

{$push: {[db_index] :{ timeStamp: epochTime , status: false , error: error.toString()} } }

谢谢,这是一个解决方案,我在文档中搜索了几个小时,却找不到它。你能回答这个问题吗
{$push: {[db_index] :{ timeStamp: epochTime , status: false , error: error.toString()} } }