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

Tổng hợp nhóm tuổi Mongo

Bạn đã đến đúng nơi, nhưng là $cond yêu cầu ba đối số (là đánh giá, kết quả đúng và kết quả sai), bạn cần phải "lồng" các hoạt động này, mỗi phép toán $cond tiếp theo dưới dạng false tình trạng. Vì vậy, cú pháp của bạn ở đây hơi sai.

Bạn cũng có thể thực hiện việc này chỉ trong nhóm $group để tránh chuyển qua toàn bộ bộ sưu tập bằng $project . Dựa trên cấu trúc tài liệu bạn đưa ra làm ví dụ, bạn sẽ tạo thành như sau:

$pipeline = array(
  array(
    '$group' => array(
      '_id' => array(
        '$cond' =>  array(
          array('$lt' => array( '$age', 18 )),
          'age_0_17',
          array(
            '$cond' => array(
              array( '$lte' => array( '$age', 25 )),
              'age_18_25',
              array(
                '$cond' => array(
                  array( '$lte' => array ( '$age', 32 )),
                  'age_26_32',
                  'age_Above_32'
                )
              )
            )
          )
        )
      ),
      'count' => array( '$sum' => 1 )
    )
  )
);

Cũng lưu ý rằng các toán tử so sánh logic như $lt hoạt động khác nhau trong các giai đoạn này với các đối tác truy vấn của chúng. Bản thân chúng lấy một mảng đối số là giá trị để kiểm tra và so sánh. Chúng trả về true/false dựa trên so sánh đó, là yêu cầu đối với đối số đầu tiên cho $cond .

Luôn có sẵn json_encode ở đâu đó bạn đang gỡ lỗi dạng truy vấn đường ống, vì JSON sẽ là phạm vi chung của các ví dụ:

echo json_encode( $pipeline, JSON_PRETTY_PRINT ) . "\n";

Điều này mang lại cấu trúc JSON chung:

[
    { "$group": {
        "_id": { 
            "$cond":[
                { "$lt":["$age",18] },
                "age_0_17",
                { "$cond":[
                    { "$lte":["$age",25] },
                    "age_18_25",
                    { "$cond":[
                        { "$lte":["$age",32] },
                        "age_26_32",
                        "age_Above_32"
                    ]}
                ]}
            ]
        },
        "count":{ "$sum": 1 }
    }}
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nâng cấp cửa hàng BigDecimal ở MongoDB

  2. Mongo trường A lớn hơn trường B

  3. MongoDB PHP UTF-8 sự cố

  4. Làm cách nào để bạn tính tổng các giá trị trong một đối tượng là một tài liệu con lồng nhau trong mongodb bằng cách sử dụng node.js?

  5. error:tham số kiểu `D` phải được sử dụng làm tham số kiểu cho một số kiểu cục bộ