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

Truy vấn và tổng hợp tất cả bằng mongoose

Bạn có thể sử dụng Đường ống tổng hợp để thêm các trường được tính toán vào một kết quả. Dưới đây là một số ví dụ sử dụng mongo shell, nhưng cú pháp trong trình trợ giúp Aggregate () của Mongoose tương tự.

Ví dụ:để tính tổng (trên mỗi tài liệu người dùng), bạn có thể sử dụng $add biểu thức trong $project sân khấu :

db.user.aggregate(
    // Limit to relevant documents and potentially take advantage of an index
    { $match: {
        user_id: "foo"
    }},

    { $project: {
        user_id: 1,
        total: { $add: ["$user_totaldocs", "$user_totalthings"] }
    }}
)

Để tính tổng trên nhiều tài liệu, bạn cần sử dụng nhóm $group sân khấu với $sum bộ tích lũy , ví dụ:

db.user.aggregate(
    { $group: {
        _id: null,
        total:       { $sum: { $add: ["$user_totaldocs", "$user_totalthings"] } },
        totaldocs:   { $sum: "$user_totaldocs" },
        totalthings: { $sum: "$user_totalthings" }
    }}
)

Bạn có thể chỉ muốn một total đồng ruộng; Tôi đã thêm vào totaldocstotalthings làm ví dụ về tính toán nhiều trường.

Một nhóm _id trong tổng số null sẽ kết hợp các giá trị từ tất cả các tài liệu được chuyển đến $group nhưng bạn cũng có thể sử dụng các tiêu chí khác tại đây (chẳng hạn như nhóm theo user_id ).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sử dụng một hướng dẫn trong truy vấn shell mongodb

  2. lỗi mongodb và mongoose lạ:không phải chủ và lỗi nô lệOk =lỗi sai

  3. Nhập kiểu dữ liệu ngày bằng mongoimport

  4. Trình điều khiển Mongo C #:Hủy số hóa BsonValue

  5. Làm cách nào để MongoDB tránh được mớ hỗn độn về SQL injection?