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

Số lượng đồng xuất hiện bằng cách sử dụng khung tổng hợp Mongo

Aggregation khá dài nhưng nó hoạt động. Ý tưởng là bạn cần tạo các cặp (x,y) dựa trên client_interactions của bạn mảng. Có thể thực hiện việc này bằng cách sử dụng $ giảm $ map . Sau đó, bạn cần chạy $ unwind và một số $ group các giai đoạn để "thu gọn" dữ liệu tổng hợp của bạn. Bạn cũng cần có $ arrayToObject để xây dựng các khóa của bạn một cách linh hoạt.

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

Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tạo động truy vấn mongodb

  2. Gọi một thủ tục đã lưu trữ trong MongoDB qua C #

  3. Thiết lập lại kết nối bởi Peer pymongo

  4. Cách gọi db.Collection.stats () từ trình điều khiển java Mongo

  5. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và Oracle NoSQL