代码之家  ›  专栏  ›  技术社区  ›  kzrfaisal

mongoose:更新特定文档数组的元素

  •  3
  • kzrfaisal  · 技术社区  · 7 年前

    我有一个叫“公司”的文件集。

    公司1-

    { 
      _id: '1',
      data:[
        {_id:'11', value: 'emp11'},
        {_id:'12', value: 'emp12'}
      ]
    }
    

    公司2-

     { 
      _id: '2',
      data:[
        {_id:'21', value: 'emp21'},
        {_id:'22', value: 'emp22'}
      ]
    }
    

    现在我想将值“emp11”更新为“emp99”。 我遵循这个方法-

    companyModel.findById('1', function(err, company) {
        return company.data.update(
            {_id: '11'},
            {$set: {value: 'emp99'}}
        );
    });
    

    我能找到那家公司,但在那之后就出现了一个错误-

    company.data.update is not a function
    

    请提出可能的解决方案。

    2 回复  |  直到 7 年前
        1
  •  7
  •   pr0p    7 年前
    companyModel.update(
      { "_id" : :"1", "data._id": "11" }, 
      { "$set": { "data.$.value": "emp99" }}, 
      function(err, company) {
        console.log(company)
    })
    

    companyModel.findById('1', function(err, company) {
        for(var i =0; i< company.data.length; i++)
            if(company.data._id === "11")
                break;
        if(i<company.data.length)
            company.data[i].value = 'emp99'
        company.save()
    });
    
        2
  •  1
  •   Rubin Porwal    7 年前
    db.company.update({
        _id: "1",
        data: {
            $elemMatch: {
                value: 'emp11'
            }
        }
    }, {
        $set: {
            'data.$.value': 'emp99'
        }
    })
    
    推荐文章