首页 > 解决方案 > 如何将新记录插入多级 MongoDB 文档

问题描述

我需要根据用户输入将新记录插入到多级模式中。我在下面解释我的文件。

分配:

{
    "zone_list":[{
        "zone":'NORTH',
        "state_list":[{
            "state":"DELHI",
            "location_list":[{
                "location":"NEW DELHI",
                "task_list":[{
                    "login_id":"9937229853",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                },{
                   "login_id":"9937229854" ,
                   "loan_accounts_assigned": [{
                       lk_loan_account_id: '1234567'.
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            },{
                "location":"AIRPORT",
                "task_list":[{
                    "login_id":"9937229855",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '12345678',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            }]
        },{
           "state":"JK",
            "location_list":[{
                "location":"NEW JK",
                "task_list":[{
                    "login_id":"9937229853",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456789',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                },{
                   "login_id":"9937229857" ,
                   "loan_accounts_assigned": [{
                       lk_loan_account_id: '12345',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            },{
                "location":"AIRPORT JK",
                "task_list":[{
                    "login_id":"9937229858",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456432',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            }] 
        }]
    },{
        "zone":'EAST',
        "state_list":[{
            "state":"WB",
            "location_list":[{
                "location":"KOLKATA",
                "task_list":[{
                    "login_id":"9937229859",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                },{
                   "login_id":"9937229850" ,
                  "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456f',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            },{
                "location":"ASAM",
                "task_list":[{
                    "login_id":"9937229895",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456456',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            }]
        },{
           "state":"ODISHA",
            "location_list":[{
                "location":"BHUBANESWAR",
                "task_list":[{
                    "login_id":"9937229844",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456ty7',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                },{
                   "login_id":"9937229845" ,
                   "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            },{
                "location":"AIRPORT BBSR",
                "task_list":[{
                    "login_id":"9937229846",
                    "loan_accounts_assigned": [{
                       lk_loan_account_id: '123456',
                       feedback_details:[
                         {name:'Raj'}
                       ] 
                    }]
                }]
            }] 
        }]
    }]
} 

在这里,我需要按照我的代码插入新记录feedback_detailslogin_id但按照我的代码我做不到。我在下面解释我的代码。

login_id=9937229853;
var data={
        name:"Rahul"
    }
    //console.log(data);
    db.collection.update(
    {},
    {$push:{"zone_list.$[].state_list.$[].location_list.$[].task_list.$[ts].loan_accounts_assigned.$[].feedback_details":data}}, 
    {arrayFilters:{"ts.login_id":login_id}}, function(uerr,udocs){
    //{"zone_list.state_list.location_list.task_list.login_id": login_id},
   // { $push : {"zone_list.state_list.location_list.task_list.loan_accounts_assigned.feedback_detail":data}},function(uerr,udocs){
        if (!uerr) {
            console.log('docs',udocs);
           var data1={
                "status": 200,
                "message": "Success"        
            } 
        }else{
            console.log('err',uerr);
            var data1={
                "status": 400,
                "message": "Failed"        
            } 
        }
        res.send(data1);
})

在这里,我也遇到了[Symbol(mongoErrorContextSymbol)]: {} }错误。feedback_detail我需要根据 login_id将新记录插入到s 中。

标签: node.jsmongodb

解决方案


login_id=9937229853;
var data={
        name:"Rahul"
    }
    //console.log(data);
    db.collection.update(
    {"zone_list.state_list.location_list.task_list.login_id": login_id}, //add match filter also
    {$push:{"zone_list.$[].state_list.$[].location_list.$[].task_list.$[ts].loan_accounts_assigned.$[].feedback_details":data}}, 
    {arrayFilters:[{"ts.login_id":login_id}]} // u missed square brackets "[]" for array filter conditions
    ,function(uerr,udocs){
        if (!uerr) {
            console.log('docs',udocs);
           var data1={
                "status": 200,
                "message": "Success"        
            } 
        }else{
            console.log('err',uerr);
            var data1={
                "status": 400,
                "message": "Failed"        
            } 
        }
        res.send(data1);
})

@subhra:您错过了数组过滤器上的 []


推荐阅读