更新对象数组中的对象

时间:2016-12-06 18:46:38

标签: mongodb meteor

我有一个像这样的对象数组的对象:

//restMenuType({_id: 'abcde', hasItems: [{itemId: 'a', sortId: 1}, {itemId: 'b', sortId: 2}]})

我正在尝试替换两个对象上的sortId键:

'replaceItemsPositionUp': function(typeId, prevId, curId, prevSortId, curSortId){
        RestMenuTypes.update({
            _id: typeId,
            hasItems: {$elemMatch: {itemId: curId}}},
            {$set: {'hasItems.sortId': prevSortId}}
        );
        RestMenuTypes.update({
                _id: typeId,
                hasItems: {$elemMatch: {itemId: prevId}}},
            {$set: {'hasItems.sortId': curSortId}}
        );

    }

这是正确的方法吗? 感谢。

1 个答案:

答案 0 :(得分:1)

这是做到这一点的方法: 在这里找到它: Update field in exact element array in MongoDB

RestMenuTypes.update({
            _id: typeId,
            'hasItems.itemId': curId},
            {$set: { "hasItems.$.sortId": prevSortId}}
        );
        return RestMenuTypes.update({
                _id: typeId,
                'hasItems.itemId': prevId},
            {$set: {'hasItems.$.sortId': curSortId}}
        );