首页 > 解决方案 > MongoDB将字段添加到数组内的对象

问题描述

我有一个看起来像这样的对象用户

{
    "_id" : ObjectId("5edbdf57ac52325464b054ec"),
    ...
    "purchaseHistory" : [ 
        {
            "_id" : ObjectId("5ee7a8f6b438a1254cec3f74"),
        ...
        },
        {
            "_id" : ObjectId("5ee7a8f6b438a1254cec3f88"),
        ...
        }
    ]
}

我想做的是通过ID向“purchaseHistory”中的特定对象添加一个新字段,例如我想向“5ee7a8f6b438a1254cec3f88”添加一个字段“status”:0

我尝试的是

users.findOneAndUpdate(
    {
        _id: ObjectId(userId),
        'purchaseHistory._id': ObjectId(saleId)
    },
    {
        $set: { 'purchaseHistory.$.status': status}
    }
)

但这给了我一个错误,我该如何正确地做到这一点?

标签: node.jsmongodb

解决方案


根据 D. SM 提供的网站,我可以这样做

users.findOneAndUpdate(
    {
        '_id': ObjectId(userId),
        'purchaseHistory._id': ObjectId(saleId)
    },
    {
        $set: { 'purchaseHistory.$.status': status }
    }
)

推荐阅读