MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Node.js Mongoose .update con ArrayFilters

Non so se Mongoose 5.0.0 dovrebbe supportare Arrayfilters fuori dagli schemi, ma puoi ottenerlo usando il metodo di comando di Mongoose che viene eseguito direttamente su MongoDB, quindi puoi utilizzare tutte le funzionalità disponibili che includono ArrayFilters su MongoDB 3.6.1

Esempio:

mongoose.connection.db.command({
  update: <YourModel>.collection.name,
  updates: [
    {
      q: { 'field1.field2._id': mongoose.Types.ObjectId(<someObjectid>) },
      u: {
        $set: { 'field1.$.field2.$[field].fieldToUpdate': "updated!" },
      },
      arrayFilters: [
        { 'field._id': mongoose.Types.ObjectId(<someObjectid>) },
      ],
    },
  ],
})