Casa > C > Como Atualizar Mais De 4 Documentos No Mongodb Usando Um Loop

Como atualizar mais de 4 documentos no MongoDB usando um loop

Você pode atualizar documentos em uma coleção MongoDB de várias maneiras, dependendo da sua necessidade de aplicação. Eu usarei um exemplo e mostrarei algumas maneiras a partir do mongo shell:

uma coleção de exemplos de estudantes:

  1. {"_id" : ObjectId("5d8f2a2629f213c15536c81f"), "studentNo" : 1, "name" : "Mark" } 
  2. { "_id" : ObjectId("5d8f2a2629f213c15536c820"), "studentNo" : 2, "name" : "Jim" } 
  3. { "_id" : ObjectId("5d8f2a2629f213c15536c821"), "studentNo" : 3, "name" : "Krish" } 
  4. { "_id" : ObjectId("5d8f2a2629f213c15536c822"), "studentNo" : 4, "name" : "Raj" } 
  5. { "_id" : ObjectId("5d8f2a2629f213c15536c823"), "studentNo" : 5, "name" : "Kim" } 

Update the Collection:

{a) The following statements update all the documents in the collection using the updateMany and update methods:

  1. db.students.updateMany( { }, { : { gender: "Male" } } ) 
  2. db.students.update( { }, { : { gender: "Male" } }, { multi: true } ) 

(b) The following code updates documents with studentNo's 1 thru 5 using a for-loop.

  1. for (let i = 1; i < 6; i++) { 
  2. db.students.updateOne( { studentNo: i }, { : { gender: "Male" } } ); 

Using a Cursor:

The db.collection.find() method returns a cursor; and this can be iterated to update the documents in many ways. Note the cursor gets exhausted after iteration is complete.

  1. let cur = db.students.find( { } ); 
  2.  
  3. while (cur.hasNext()) { 
  4. let doc = cur.next(); 
  5. // ... [*] 

[*] For example, you can use this statement to update individual documents within the loop: db.students.updateOne( { studentNo: doc.studentNo }, { : { gender: "Male" } } )

-or-

  1. cur.forEach(doc => // ... [*] ) 

-or-

  1. for (let doc of cur.toArray()) { 
  2. // ... [*] 

NOTE: In addition, mongoDB also has findAndModify and replaceOne methods to update documents. See Update Documents (MongoDB documentation).

De Banna

O Google tem o nosso histórico, se pesquisarmos na guia incógnito? :: Quantos bytes há em 1 GB de memória?