MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zliczyć liczbę wystąpień ciągu w polu w dokumentach zgrupowanych w innym polu w MongoDB?

Możesz wypróbować poniższe zapytanie:

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"
        }
    }
])

Test: MongoDB-Plac zabaw




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. node-mongodb-native:Jak mogę udostępnić obiekt db api wywołania zwrotnego połączenia za pośrednictwem mojej aplikacji?

  2. Nie można pobrać wartości właściwości dirtyPropertyNames dla pól asocjacyjnych w Grails

  3. Jak uzyskać dostęp do lokalnego hosta hosta z poziomu klastra kubernetes?

  4. klasy i interfejsy do pisania typizowanych modeli i schematów Mongoose w Typescript za pomocą zdecydowanie typed

  5. Jak mogę napisać agregację bez przekraczania maksymalnego rozmiaru dokumentu?