首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬推嵌套子文档数组

猫鼬推嵌套子文档数组
EN

Stack Overflow用户
提问于 2016-02-23 10:04:19
回答 3查看 8.3K关注 0票数 2

我需要在嵌套子文档数组中推送数据:

这是我的Json:

代码语言:javascript
复制
[
  {
    _id: "56cbe9727bab33a413216dd4",
    company_name: "Star",
    __v: 0,
    created_at: "2016-02-23T05:09:06.754Z",
    plan: [
            {
            plan_name: "Mediclassic",
            plan_type: "Individual",
            _id: "56cbe9727bab33a413216dd5",
            created_at: "2016-02-23T05:09:06.756Z",
            rate_card: [
                          {
                            zone: "zone-2",
                            suminsured: 150000,
                            premium: 2874,
                            size: "1A",
                            _id: "56cbe9727bab33a413216dd6",
                            benefits: {
                            hospitals: true,
                            copay: true,
                            cashless_hospital: true,
                            existing_disease_cover: true
                            },
                            age: {
                            min: "5M",
                            max: 35
                            }
                          }
                        ]
            }
          ]
  }
]

我需要在rate_card中推送我的数据,我尝试过一些东西,但它不起作用。

下面是我的代码:

AngularController.js

代码语言:javascript
复制
$scope.RateCardCreateAction = function(){
    $scope.params = $routeParams.id;
    console.log($scope.insurance.plan.rate_card);
    $http.put('/auth/insurance-list/plan/new/rate_card/' + $scope.params, $scope.insurance.plan.rate_card).success(function(response){
        console.log(response);
        refresh();
    });
};

mainRoutes.js

//新利率卡

代码语言:javascript
复制
router.put('/secure/insurance-list/plan/new/rate_card/:id', function(req, res){
var id = req.params.id;
Insurance.update({'plan._id':id}, {$push : 
    { 
        'rate_card' : {
            'zone' : req.body.zone,
            'suminsured' : req.body.suminsured,
            'premium' : req.body.premium,
            'size' : req.body.size, 
            'age' : {
                        'min' : req.body.age.min, 
                        'max' : req.body.age.max
                    },
            'benefits' : {
                            'hospitals' : req.body.benefits.hospitals,
                            'cashless_hospital' : req.body.benefits.cashless_hospital,
                            'copay' : req.body.benefits.copay,
                            'existing_disease_cover' : req.body.benefits.existing_disease_cover
                        }

            }   
    }
}, {upsert: true}, function(err, docs){
res.json(docs);
console.log(docs);
});

});

在这里,我需要将数据推送到rate_card,但是数据没有存储在子文档数组中,这里正在获取计划id并试图推送,但没有工作。

在服务器响应中得到这个{ ok: 0, n: 0, nModified: 0 }

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-24 06:06:43

试试这个,我希望这个能帮到你

代码语言:javascript
复制
router.put('/secure/insurance-list/plan/new/rate_card/:id/:id2', function(req, res){
        var id = req.params.id;
        var id2 = req.params.id2;
        Insurance.update({_id:id, 'plan._id':id2}, {$push : 
            {'plan.$.rate_card' : req.body}
        }, {upsert: true}, function(err, docs){
        res.json(docs);
        console.log(docs);
        });
    });
票数 7
EN

Stack Overflow用户

发布于 2019-07-21 17:32:38

如果插入的值不存在,那么最好使用$addToSet。

代码语言:javascript
复制
var updateArr = {
  'roomUsers':{
     userId:req.session.userInfo._id,
     requestDate:Date.now(),
     status:1
  }
};

roomInfo.findOneAndUpdate({_id:roomId}, {$addToSet:updateArr}, (err, result) => {

if (!err && result) {
  res.send({
     status:true
  });
}
 else{
    res.send({
      status:false
    });
 }
});
票数 0
EN

Stack Overflow用户

发布于 2021-04-01 17:30:15

我使用以下更新查询完成了它:

代码语言:javascript
复制
db.insurance.updateOne(
{
    _id: ObjectId('60659595afcb710627e3fad7')
},
{
    $push: {
        "plan.$[element].rate_card": {
            $each: [
                { _id: ObjectId('6062bd90c5a1d66fdd2c91bc'), premium: 2874, size: "1A" },
                { _id: ObjectId('6062bd90c5a1d66fdd2c91bc'), premium: 2874, size: "1A" }]
        }
    }
},
{
    arrayFilters: [{ "element._id": ObjectId('6065a35ee1e5f1153504e861') }]
}
);

$each中,您需要添加对象数组。element._id是您的子文档id (上图为plan _id)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35574398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档