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

Đếm tổng hợp đối tượng lồng nhau trong MongoDB

Bạn cần xử lý $unwind khi làm việc với mảng và bạn cần thực hiện điều này ba lần:

 db.collection.aggregate([

     // Un-wind the array's to access filtering 
     { "$unwind": "$studies" },
     { "$unwind": "$studies.samples" },
     { "$unwind": "$studies.samples.formdata" },

     // Group results to obtain the matched count per key
     { "$group": {
         "_id": "$studies.samples.formdata.GT",
         "count": { "$sum": 1 }
     }}
 ])

Lý tưởng nhất là bạn muốn lọc đầu vào của mình. Có thể thực hiện việc này với $ đối sánh cả trước và sau khi $ unwind được xử lý và sử dụng $ regex để khớp với các tài liệu trong đó dữ liệu tại điểm bắt đầu bằng "1".

 db.collection.aggregate([

     // Match first to exclude documents where this is not present in any array member
     { "$match": { "studies.samples.formdata.GT": /^1/ } },

     // Un-wind the array's to access filtering 
     { "$unwind": "$studies" },
     { "$unwind": "$studies.samples" },
     { "$unwind": "$studies.samples.formdata" },

     // Match to filter
     { "$match": { "studies.samples.formdata.GT": /^1/ } },

     // Group results to obtain the matched count per key
     { "$group": {
         "_id": {
              "_id": "$_id",
              "key": "$studies.samples.formdata.GT"
         },
         "count": { "$sum": 1 }
     }}
 ])

Lưu ý rằng trong mọi trường hợp, các mục có tiền tố "đô la $" là các "biến" tham chiếu đến các thuộc tính của tài liệu. Đây là những "giá trị" để sử dụng đầu vào ở phía bên phải. Các "phím" bên trái phải được chỉ định là một khóa chuỗi thuần túy. Không có biến nào có thể được sử dụng để đặt tên cho khóa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật tài liệu MongoDB trong VB.NET bằng Trình điều khiển C #

  2. Trình điều khiển Java MongoDB:khác biệt với sắp xếp

  3. Không thể đưa Mảng tài liệu con Mongoose.js vào điền

  4. mongoose có hỗ trợ các trường ảo được chọn như SQL không

  5. node.js mongodb chọn tài liệu theo _id node-mongodb-native