MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongo преобразува вградения документ в масив

Все още трябва да преглеждате съдържанието, но вместо това трябва да пишете обратно, като използвате групови операции:

Или за MongoDB 2.6 и по-нова версия:

var bulk = db.collection.initializeUnorderedBulkOp(),
    count = 0;

db.collection.find({ 
   "$where": "return !Array.isArray(this.experience)"
}).forEach(function(doc) {
    bulk.find({ "_id": doc._id }).updateOne({
        "$set": { "experience": [doc.experience["0"]] }
    });
    count++;

    // Write once in 1000 entries
    if ( count % 1000 == 0 ) {
        bulk.execute();    
        bulk = db.collection.initializeUnorderedBulkOp();
    }
})

// Write the remaining
if ( count % 1000 != 0 )
    bulk.execute();

Или в съвременните версии на MongoDB 3.2 и по-нови, bulkWrite() методът е предпочитан:

var ops = [];

db.collection.find({ 
   "$where": "return !Array.isArray(this.experience)"
}).forEach(function(doc) {
   ops.push({
       "updateOne": {
           "filter": { "_id": doc._id },
           "update": { "$set": { "experience": [doc.experience["0"]] } }
       }
   });

   if ( ops.length == 1000 ) {
       db.collection.bulkWrite(ops,{ "ordered": false })
       ops = [];
   }
})

if ( ops.length > 0 )
    db.collection.bulkWrite(ops,{ "ordered": false });

Така че, когато пишете обратно в базата данни през курсор, тогава операциите за групово записване с "неподреден" набор са правилният начин. Това е само едно записване/отговор на партида от 1000 заявки, което намалява много режийни разходи, а „неподредено“ означава, че записите могат да се извършват паралелно, а не в сериен ред. Всичко това го прави по-бързо.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Филтриране на съдържанието на вътрешен масив в набор от резултати

  2. Spring Boot и как да конфигурирам подробности за връзката с MongoDB?

  3. Вземете списък с индекси в MongoDB

  4. Вмъкване на голям масив от обекти в mongodb от nodejs

  5. BSON библиотека за java?