Home > other >  MongoDB - Update with $set and $first operators
MongoDB - Update with $set and $first operators

Time:08-30

I'm trying to update a field with the first element of an array.

The model:

{
    name: { type: ObjectId },
    names: { type: [ObjectId] }
}

The request:

Model.updateMany({}, 
            {
                $set: {
                    name: {
                        $first: '$names',
                    },
                },
            })

But I'm getting an error:

Cast to ObjectId failed for value "{ '$first': '$names' }" (type Object) at path "name" because of "BSONTypeError"

Do you know another way to set a field with the value of the first element of an array? Should I use aggregate instead?

CodePudding user response:

You need to update with aggregation pipeline.

Model.updateMany({},
[
  {
    $set: {
      name: {
        $first: '$names',
      },
    },
  }
])
  • Related