MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongodb chuyển đổi nhiều đối tượng thành một mảng, tại chỗ, vĩnh viễn

Bạn có thể thử đường dẫn tổng hợp bên dưới trong 3.4 phiên bản.

Tổng hợp dưới đây thay đổi cửa hàng nhúng tài liệu vào mảng các cặp giá trị khóa bằng cách sử dụng $ objectToArray theo sau là $ map để xuất mảng đã biến đổi với trường mới trong khi vẫn giữ tất cả các trường hiện có.

Cập nhật hàng loạt để viết cấu trúc cửa hàng mới.

var bulk = db.getCollection(col).initializeUnorderedBulkOp();
var count = 0;
var batch = 1;

db.getCollection(col).aggregate([
{"$match":{"store_affiliation.stores":{"$ne":{"$type":4}}}},
{"$addFields":{
  "stores":{
      "$map":{
        "input":{"$objectToArray": "$store_affiliation.stores"}, 
        "in":{
           "store_code":"$$this.k", 
           "role":"$$this.v.role", 
           "startdate":"$$this.v.startdate", 
           "enddate":"$$this.v.enddate", 
           "permissions":"$$this.v.permissions"
         }
      }
    }
}}]).forEach(function(doc){ 
    var _id = doc._id; 
    var stores = doc.stores; 
    bulk.find({ "_id" : _id }).updateOne(
      { $set: {"store_affiliation.stores" : stores} }
   ); 
    count++;  
    if (count == batch) { 
        bulk.execute(); 
        bulk = db.getCollection(col).initializeUnorderedBulkOp(); 
        count = 0;
    } 
});

if (count > 0) { 
    bulk.execute(); 
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sắp xếp theo mức độ liên quan với MongoDB

  2. Làm cách nào để xóa thuộc tính của đối tượng lồng nhau khỏi tài liệu MongoDB?

  3. Cách nối chuỗi trong SQL

  4. làm thế nào để cập nhật các trường của một đối tượng lồng nhau trong mongodb?

  5. Kết xuất mẫu không chuyển biến tổng hợp pymongo sang mẫu