MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Sisipkan bidang dengan ukuran array di mongo

Anda dapat menggunakan .aggregate() metode ke $project dokumen Anda dan kembalikan $size dari array item. Setelah itu Anda perlu mengulang hasil agregasi Anda menggunakan .forEach loop dan $set bidang itemTotal untuk dokumen Anda menggunakan "Bulk" operasi untuk efisiensi maksimum.

var bulkOp = db.myDocument.initializeUnorderedBulkOp(); 
var count = 0;

db.myDocument.aggregate([
    { "$match": { 
        "itemsTotal": { "$exists": false } ,
        "items": { "$exists": true }
    }}, 
    { "$project": { "itemsTotal": { "$size": "$items" } } }
]).forEach(function(doc) { 
        bulkOp.find({ "_id": doc._id }).updateOne({ 
            "$set": { "itemsTotal": doc.itemsTotal }
        });
        count++;
        if (count % 200 === 0) {
            // Execute per 200 operations and re-init
            bulkOp.execute();
            bulkOp = db.myDocument.initializeUnorderedBulkOp();
        }
})

// Clean up queues
if (count > 0) { 
    bulkOp.execute();
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Jawa | Bagaimana mengelola koneksi

  2. Mongodb -- menyertakan atau mengecualikan elemen tertentu dengan c# driver

  3. Kueri MongoDB di repositori Spring:batasi jumlah catatan setelah filter

  4. Pesan Kesalahan:MongoError:Otentikasi buruk gagal melalui string URI

  5. Apa perbedaan antara ukuran dan ukuran penyimpanan yang ditampilkan oleh fungsi Mongo stats()?