2

我正在使用 Mongoose,我正在尝试更新数组元素并将其重新更新。这是我的文档结构:

{   name:String,
    friends:[
        {   name:String,
            age:Number
        }
    ]
}

当我执行以下查询时,我得到了结果中的所有朋友,但我只想让 25 岁的朋友回来:

theCollection.findOneAndUpdate(
    {   name : 'cherif',
        'friends.name':'kevin'
    },
    {   $set:{
            'friends.$.age':25
        }
    },
    {   friends:
        {   $elemMatch:
            {   age : 25 } 
        }
    },
    function(err,result){
        if (!err) {
            console.log(result);
        }});
4

1 回答 1

11

作为指定的文档findOneAndUpdate您需要将投影对象作为参数的select属性包含在内options

theCollection.findOneAndUpdate(
    {   name : 'cherif',
        'friends.name':'kevin'
    },
    {   $set:{
            'friends.$.age':25
        }
    },
    {   select: { 
            friends: {
               $elemMatch: 
               {   age : 25 } 
            }
        }
    },
    function(err,result){
        if (!err) {
            console.log(result);
        }
    });
于 2013-09-24T16:51:58.967 回答