MongoDB将字段添加到数组内的对象

时间:2020-06-15 18:55:23

标签: node.js mongodb

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

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

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

我尝试过的是

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

但是它给我一个错误,我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

根据D. SM提供的网站,我能够做到这一点

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

答案 1 :(得分:-1)

MongoDB在这种情况下提供了positional update operator