如何使用猫鼬节点js更新嵌套数组的多个对象值(仅适用于更新数组中的第一个对象值)

时间:2019-03-01 15:41:05

标签: node.js mongodb mongoose

这是我们的数据库集合(用户)结构。

{
    "_id" : ObjectId("5b1e67f7966be059daf25a27"),    
    "userId" : 148,    
    "updatedAt" : ISODate("2019-02-13T08:00:01.250Z"),
    "createdAt" : ISODate("2018-06-11T12:15:51.607Z"),   
    "sportsRanking" : [ 
        {
            "sportId" : 1,
            "rank" : 2,
            "subRank" : 1,
            "points" : 80.0,            
        }, 
        {
            "sportId" : 2,
            "rank" : 2,
            "subRank" : 2,
            "points" : 80,            
        }, 
        {            
            "points" : 115.0,
            "subRank" : 0,
            "rank" : 2,
            "sportId" : 4,            
        }, 
        {            
            "points" : 130.0,
            "subRank" : 1,
            "rank" : 2,
            "sportId" : 3
        }
    ],    
    "vStatus" : 0.0,
    "groupId" : 0,    
}

我们尝试使用以下代码更新嵌套数组元素。但是没有用我们还尝试了updateManyBulkWritearrayFilters等。但是它仅更新数组中的第一个对象值(点)。请找到以下代码。

UserModel.update({
            'userId': 148,
            'sportsRanking.sportId': {$in:[1,2,3,4]}          
        }, {
                $set: {
                    'sportsRanking.$.points': 35                                                                       
                }
            },{multi:true});

0 个答案:

没有答案