6 votes

Mongo - Comment mettre à jour plusieurs documents avec des valeurs différentes en une seule requête ?

Je souhaite écrire une requête pour mettre à jour plusieurs documents en une seule requête.

Voici mon document Mongo.

[
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204cd"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "ABC",
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204ce"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "DEF",
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204cf"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "GHI",
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204d0"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "XYZ",
        "userType": "admin"
    }
]

J'ai suivi l'objet mis à jour dans le code, comment puis-je le mettre à jour dans une base de données avec la requête.

[
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204cd"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "ABC123",
        "color":"red"
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204ce"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "DEF123",
        "color":"blue"
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204cf"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "GHI123",
        "color":"green"
        "userType": "admin"
    },
    {
        "_id" : ObjectId("5b0f0a2ca1f6633032c204d0"),
        "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
        "name" : "XYZ123",
        "color":"rgb(14,256,12, 1)"
        "userType": "admin"
    }
]

Veuillez me suggérer les moyens appropriés, ou nous pouvons le faire ou non ?

13voto

Anthony Winzlet Points 10216

Vous avez essentiellement besoin de bulkWrite opération dans mongodb

const array = [
  {
    "_id" : ObjectId("5b0f0a2ca1f6633032c204cd"),
    "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
    "name" : "ABC123",
    "color":"red"
    "userType": "admin"
  },
  {
    "_id" : ObjectId("5b0f0a2ca1f6633032c204ce"),
    "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
    "name" : "DEF123",
    "color":"blue"
    "userType": "admin"
  },
  {
    "_id" : ObjectId("5b0f0a2ca1f6633032c204cf"),
    "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
    "name" : "GHI123",
    "color":"green"
    "userType": "admin"
  },
  {
    "_id" : ObjectId("5b0f0a2ca1f6633032c204d0"),
    "parent_id" : ObjectId("5b0f09e1a1f6633032c204cc"),
    "name" : "XYZ123",
    "color":"rgb(14,256,12, 1)"
    "userType": "admin"
  }
]

Et l'interrogation finale

Model.bulkWrite(
  array.map((data) => 
    ({
      updateOne: {
        filter: { _id: data._id },
        update: { $set: data }
      }
    })
  )
})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X