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

bagaimana cara mendapatkan kombinasi item dalam bidang array di MongoDB?

Jika saya memahami dengan benar hubungan Anda dari contoh yang diberikan - kueri ini harus menjadi solusi untuk masalah Anda:

db.collection.aggregate([{
            $unwind : "$keywords"
        }, {
            $lookup : {
                from : "collection",
                localField : "_id",
                foreignField : "_id",
                as : "items"
            }
        }, {
            $unwind : "$items"
        }, {
            $unwind : "$items.keywords"
        }, {
            $redact : {
                $cond : {
                    if  : {
                        $cmp : ["$keywords", "$items.keywords"]
                    },
                then : "$$DESCEND",
                else  : "$$PRUNE"
            }
        }
    }, {
        $group : {
            _id : {
                k1 : "$keywords",
                k2 : "$items.keywords",
            },
            items : {
                $sum : 0.5
            }
        }
    }, {
        $sort : {
            "_id" : 1
        }
    }, {
        $project : {
            _id : 1,
            items : 1,
            a : {
                $cond : {
                    if  : {
                        $eq : [{
                                $cmp : ["$_id.k1", "$_id.k2"]
                            }, 1]
                    },
                then : "$_id.k2",
                else  : "$_id.k1"
            }
        },
        b : {
            $cond : {
                if  : {
                    $eq : [{
                            $cmp : ["$_id.k1", "$_id.k2"]
                        }, -1]
                },
            then : "$_id.k2",
            else  : "$_id.k1"
        }
    },

}
}, {
    $group : {
        _id : {
            k1 : "$a",
            k2 : "$b",
        },
        items : {
            $sum : "$items"
        }
    }
}, {
    $project : {
        _id : 0,
        item1 : "$_id.k1",
        item2 : "$_id.k2",
        count : "$items"
    }
}
])
{
    "item1" : "cs",
    "item2" : "dd",
    "count" : 1.0
}
{
    "item1" : "cs",
    "item2" : "ee",
    "count" : 1.0
}
{
    "item1" : "cs",
    "item2" : "se",
    "count" : 2.0
}
{
    "item1" : "dd",
    "item2" : "se",
    "count" : 1.0
}
{
    "item1" : "ee",
    "item2" : "se",
    "count" : 1.0
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Koneksi MongoDb ditolak

  2. Permintaan berbeda dengan MongoMapper

  3. Graphql membuat hubungan antara dua kueri. Kesalahan tidak dapat diakses sebelum inisialisasi

  4. Tidak dapat mengimpor json di MongoDB

  5. Asosiasi Mongoid Membuat Catatan (yang tidak diinginkan)