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

Đếm số lần xuất hiện của chuỗi trong một trường trên các tài liệu được nhóm trên một trường khác trong MongoDB?

Bạn có thể thử truy vấn dưới đây:

db.collection.aggregate([
    /** Group all docs based on flightNum & status & count no.of occurances */
    {
        $group: {
            _id: {
                flightNum: "$flightNum",
                status: "$status"
            },
            count: {
                $sum: 1
            }
        }
    },
    /** Group on flightNum & push an objects with key as status & value as count */
    {
        $group: {
            _id: "$_id.flightNum",
            status: {
                $push: {
                    k: "$_id.status",
                    v: "$count"
                }
            }
        }
    },
    /** Recreate status field as an object of key:value pairs from an array of objects */
    {
        $addFields: {
            status: {
                $arrayToObject: "$status"
            }
        }
    },
    /** add flightNum inside status object */
    {
        $addFields: {
            "status.flightNum": "$_id"
        }
    },
    /** Replace status field as new root for each doc in coll */
    {
        $replaceRoot: {
            newRoot: "$status"
        }
    }
])

Kiểm tra: MongoDB-Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khung tổng hợp Mongodb | Nhóm trên nhiều giá trị?

  2. Đẩy phần tử trong mảng là khóa của một đối tượng khác tại vị trí cụ thể

  3. Nhận các giá trị khác biệt được sắp xếp với MongoTemplate

  4. Có gì mới trong MongoDB 4.4

  5. Hướng dẫn dành cho nhà phát triển về MongoDB Sharding