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

Mongoose-opdateringMange med forskellige værdier ved unikt id som e-mail uden loop

Du kan bruge Array.map til at forme hvert input til brug med en masseskrivning.

Den adfærd, du beskriver, ser ud til at bruge email felt for at identificere hvert dokument.

Du har ikke angivet, hvad der skulle ske med andre felter i dokumenterne. Hvis du vil lade andre felter være i fred, skal du bruge $set for at fjerne felter, der ikke er nævnt i de indgående data, skal du bruge $replace .

I skallen ser det sådan ud:

PRIMARY> db.users.find()
{ "_id" : 1, "email" : "[email protected]", "name" : "one" }
{ "_id" : 2, "email" : "[email protected]", "name" : "two" }
{ "_id" : 3, "email" : "[email protected]", "name" : "three" }

PRIMARY> let users = [     
  { email: "[email protected]", name: "oneeee" },       
  { email: "[email protected]", name: "twoooo" },       
  { email: "[email protected]", name: "three" },       
  { email: "[email protected]", name: "four" }   
]

PRIMARY> let bulkUpdate = db.users.initializeUnorderedBulkOp()

PRIMARY> users.forEach(u => bulkUpdate.find({email:u.email}).upsert().update({$set:u}))

PRIMARY> bulkUpdate.execute()
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 0,
    "nUpserted" : 1,
    "nMatched" : 3,
    "nModified" : 2,
    "nRemoved" : 0,
    "upserted" : [
        {
            "index" : 3,
            "_id" : ObjectId("5f5e79ff28ee536df4c4a88e")
        }
    ]
})

PRIMARY> db.users.find()
{ "_id" : 1, "email" : "[email protected]", "name" : "oneeee" }
{ "_id" : 2, "email" : "[email protected]", "name" : "twoooo" }
{ "_id" : 3, "email" : "[email protected]", "name" : "three" }
{ "_id" : ObjectId("5f5e79ff28ee536df4c4a88e"), "email" : "[email protected]", "name" : "four" }

Tag et kig på Model.bulkWrite() for et eksempel på, hvordan man gør dette i mongoose.




  1. Fejlsikker meddelelsesudsendelse, der skal forbruges af en specifik modtager ved hjælp af redis og python

  2. Sådan repræsenterer du et array med blandede typer

  3. Kan Meteor korrekt håndtere data opdateret eksternt direkte til MongoDB-databasen?

  4. MongoDB $abs