MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Penghitungan kemunculan bersama menggunakan kerangka agregasi Mongo

Agregasi cukup panjang tetapi berhasil. Idenya adalah Anda perlu membuat pasangan (x,y) berdasarkan client_interactions Anda Himpunan. Itu dapat dilakukan menggunakan $reduce dan $map . Kemudian Anda perlu menjalankan $unwind dan beberapa $group tahapan untuk "menggulung" data agregat Anda. Anda juga memerlukan $arrayToObject untuk membuat kunci Anda secara dinamis.

db.collection.aggregate([
    {
        $addFields: {
            "client_interactions": {
                $filter: { input: "$client_interactions", cond: { $eq: [ "$$this.productType", "A" ] } }
            }
        }
    },
    {
        $project: {
            a: {
                $reduce: {
                    input: "$client_interactions",
                    initialValue: [],
                    in: {
                        $concatArrays: [
                            "$$value",
                            { $map: { input: "$client_interactions", as: "c",  in: { x: "$$this.productId", y: "$$c.productId" } } }
                        ]
                    }
                }
            }
        }
    },
    {
        $unwind: "$a"
    },
    {
        $match: {
            $expr: {
                $ne: [ "$a.x", "$a.y" ]
            }
        }
    },
    {
        $sort: {
            "a.x": 1,
            "a.y": 1
        }
    },
    {
        $group: {
            _id: "$a",
            count: { $sum: 1 }
        }
    },
    {
        $group: {
            _id: "$_id.x",
            arr: { $push: { k: "$_id.y", v: "$count" } }
        }
    },
    {
        $group: {
            _id: null,
            "co-ocurrences-count": { $push: { k: "$_id", v: { $arrayToObject: "$arr" } } }
        }
    },
    {
        $project: {
            _id: 0,
            "co-ocurrences-count": { $arrayToObject: "$co-ocurrences-count" }
        }
    }
])

Taman Bermain Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menggunakan Elektron dengan benar

  2. Bagaimana cara mengganti nama bidang saat melakukan pencarian/proyeksi di MongoDB?

  3. Mongodb - kesalahan Mongoimport karakter tidak valid

  4. Meteor mengembalikan kesalahan string heksadesimal yang tidak valid mencoba membuat ObjectID?

  5. Di mana saya harus menambahkan opsi --rest untuk MongoDB?