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

Làm thế nào để Đếm Nhóm sản phẩm khôn ngoan với Tên trường trong Monogodb?

Bạn có thể tận dụng việc sử dụng $ arrayToObject toán tử trong một loạt các đường ống và $ ReplaceRoot để có được kết quả mong muốn.

Lưu ý : hubId được chuyển đổi thành một chuỗi trong quá trình vận hành đường ống là $ arrayToObject toán tử hoạt động tốt nếu giá trị "khóa" là một chuỗi. Vì vậy, nếu hubId là một ObjectId thì $ toString là cần thiết khi $ arrayToObject được áp dụng.

Bạn sẽ cần chạy đường dẫn tổng hợp sau:

Product.aggregate([
    {  "$group": {
            "_id": {
                "hubId": "$hubId",
                "status": "$ProductStatus"
            },
            "count": { "$sum": 1 }
    } },
    { "$group": {
        "_id": "$_id.hubId",
        "counts": {
            "$push": {
                "k": "$_id.status",
                "v": "$count"
            }
        }
    } },
    { "$group": {
        "_id": null,
        "counts": {
            "$push": {
                "k": { "$toString": "$_id" },
                "v": "$counts"
            }
        }
    } },
    { "$addFields": {
        "counts": {
            "$map": {
                "input": "$counts",
                "in": {
                    "$mergeObjects": [
                        "$$this",
                        { "v":  { "$arrayToObject": "$$this.v" } }
                    ]
                }
            }
        }
        
    } },
    {  "$replaceRoot": {
        "newRoot": { "$arrayToObject": "$counts" }
    } }  
])

mà tạo ra tài liệu kết quả sau:

{
    "xyz" : {
        "Delivered" : 1,
        "On the Way" : 1
    },
    "mlm" : {
        "On the Way" : 1,
        "Delivered" : 2
    },
    "yyy" : {
        "On the Way" : 1,
        "Delivered" : 1,
        "Cancelled" : 1
    }
}

Tất nhiên, điều này không tạo ra trạng thái khác có số 0 nhưng giải pháp có thể là một điểm khởi đầu tốt.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bảo mật MongoDB khỏi các cuộc tấn công từ bên ngoài

  2. Không thể xác thực trên mongodb bằng PHP

  3. Làm cho các truy vấn mongoose.js chạy đồng bộ

  4. tài liệu nhúng so với kiểu dữ liệu băm trong mongoid

  5. Làm cách nào để tính giá trị trung bình có trọng số trong mongoDB bằng cách sử dụng khung tổng hợp?