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

Dalam pencarian MongoDB dalam array dan urutkan berdasarkan jumlah kecocokan

Ya, itu mungkin menggunakan Kerangka Agregasi.

Asumsi

  • Dataset yang digunakan di sini sama dengan yang digunakan dalam Dapatkan dokumen dengan tag dalam daftar, diurutkan berdasarkan jumlah kecocokan
  • tags atribut adalah himpunan (tidak ada elemen berulang)

Kueri

Pendekatan ini memaksa Anda untuk melepaskan hasil dan mengevaluasi kembali predikat kecocokan dengan hasil yang tidak ditentukan, sehingga benar-benar tidak efisien.

db.test_col.aggregate(
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$unwind: "$tags"}, 
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$group: {
        _id:{"_id":1}, 
        matches:{$sum:1}
    }}, 
    {$sort:{matches:-1}}
);

Hasil yang Diharapkan

{
    "result" : [
        {
            "_id" : {
                "_id" : ObjectId("5051f1786a64bd2c54918b26")
            },
            "matches" : 3
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1726a64bd2c54918b24")
            },
            "matches" : 2
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1756a64bd2c54918b25")
            },
            "matches" : 1
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. pagination jarak MongoDB

  2. MongoDB:Menghitung berapa banyak dari setiap nilai berbeda yang ada?

  3. Opsi koneksi ulang otomatis luwak

  4. kueri mongodb dengan AND dan OR

  5. Menyempurnakan Seni Mengotomatisasi &Mengelola Basis Data Open Source Paling Populer:2017 @ Somenines