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

Đếm cả mảng nhúng bên ngoài và bên trong trong một truy vấn duy nhất

Bạn có thể sử dụng $reduce $concatArrays để "hợp nhất" một "mảng mảng" bên trong thành một danh sách duy nhất và đo lường $size của điều đó. Sau đó, chỉ cần $add hai kết quả cùng nhau:

db.posts.aggregate([
  { "$match": { _id:ObjectId("5dbdacc28cffef0b94580dbd") } },
  { "$addFields": {
    "totalBoth": {
      "$add": [
        { "$size": "$comments" },
        { "$size": {
          "$reduce": {
            "input": "$comments.replies",
            "initialValue": [],
            "in": {
              "$concatArrays": [ "$$value", "$$this" ] 
            }
          }
        }}
      ]
    }
  }}
])

Lưu ý rằng "mảng các mảng" là hiệu ứng của một biểu thức như $comments.replies , do đó, hoạt động để biến chúng thành một mảng duy nhất, nơi bạn có thể đo lường tất cả các phần tử.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lược đồ MongoDB để lưu trữ lịch sử vị trí của người dùng

  2. Cách lưu trữ bảng với cột cụ thể nên được lưu trữ trong mảng và truy xuất nó trong Angularjs (Mean Stack)

  3. dân số đệ quy mongoose

  4. Dữ liệu mùa xuân mongo sử dụng HOẶC trong Truy vấn

  5. Cách tổng hợp điểm của tất cả các môn học trong mongoDB