MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js Mongoose .update mit ArrayFilters

Ich weiß nicht, ob Mongoose 5.0.0 standardmäßig Arrayfilter unterstützen soll, aber Sie können dies erreichen, indem Sie die Befehlsmethode von Mongoose verwenden, die direkt auf MongoDB ausgeführt wird, und daher alle verfügbaren Funktionen nutzen können, einschließlich ArrayFilters auf MongoDB 3.6.1

Beispiel:

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>) },
      ],
    },
  ],
})