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

Đếm các trường trong Bộ sưu tập MongoDB

Lặp lại toàn bộ tập hợp và tìm toàn bộ số trường có

Giờ đây, bạn có thể sử dụng toán tử tổng hợp $ objectToArray (SERVER-23310) để biến các khóa thành giá trị và đếm chúng. Toán tử này có sẵn trong MongoDB v3.4.4 +

Ví dụ:

db.collection.aggregate([
         {"$project":{"numFields":{"$size":{"$objectToArray":"$$ROOT"}}}}, 
         {"$group":{"_id":null, "fields":{"$sum":"$numFields"}, "docs":{"$sum":1}}}, 
         {"$project":{"total":{"$subtract":["$fields", "$docs"]}, _id:0}}
])

Giai đoạn đầu tiên $project là biến tất cả các khóa thành mảng để đếm trường. Giai đoạn thứ hai $group là tổng số khóa / trường trong bộ sưu tập, cũng là số tài liệu được xử lý. Giai đoạn thứ ba $project đang trừ tổng số trường với tổng số tài liệu (Vì bạn không muốn tính cho _id ).

Bạn có thể dễ dàng thêm $ avg để tính trung bình trong giai đoạn cuối cùng.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để sử dụng thư viện của bên thứ 3 trong glassfish?

  2. 'nâng cấp' trong một tài liệu nhúng

  3. nhóm theo truy vấn về bộ sưu tập sao băng

  4. MongoDB - Lỗi:lệnh getMore không thành công:Không tìm thấy con trỏ

  5. Nhóm Mongodb và sắp xếp