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

mongodb:cara terbaik untuk mendapatkan dokumen tertentu dan kemudian sisanya

Yah tidak ada banyak detail di sini, tetapi saya dapat memberikan contoh kasus untuk dipertimbangkan. Perhatikan kumpulan dokumen berikut:

{ "user" : "fred", "color" : "black" }
{ "user" : "bill", "color" : "blue" }
{ "user" : "ted", "color" : "red" }
{ "user" : "ted", "color" : "black" }
{ "user" : "fred", "color" : "blue" }
{ "user" : "bill", "color" : "red" }
{ "user" : "bill", "color" : "orange" }
{ "user" : "fred", "color" : "orange" }
{ "user" : "ted", "color" : "orange" }
{ "user" : "ally", "color" : "orange" }
{ "user" : "alice", "color" : "orange" }
{ "user" : "alice", "color" : "red" }
{ "user" : "bill", "color" : "purple" }

Jadi misalkan Anda ingin gelembung item untuk pengguna "tagihan" dan "ted" ke bagian atas hasil Anda, lalu yang lainnya diurutkan berdasarkan user dan color . Yang dapat Anda lakukan adalah menjalankan dokumen melalui $project tahap secara agregat, sebagai berikut:

db.bubble.aggregate([

    // Project selects the fields to show, and we add a weight value
    {$project: {
        _id: 0,
        "user": 1,
        "color": 1,
        "weight": {$cond:[
            {$or: [
                {$eq: ["$user","bill"]},
                {$eq: ["$user","ted"]}
            ]},
            1,
            0
         ]}
     }},

    // Then sort the results with the `weight` first, then `user` and `color`
    {$sort: { weight: -1, user: 1, color: 1 }}

])

Jadi yang dilakukan adalah menetapkan nilai secara kondisional ke weight berdasarkan apakah user dicocokkan dengan salah satu nilai yang diperlukan. Dokumen yang tidak cocok hanya diberi 0 nilai.

Saat kami memindahkan dimodifikasi . ini dokumen ke $sort fase, weight baru key dapat digunakan untuk mengurutkan hasil sehingga dokumen "berbobot" berada di atas, dan yang lainnya akan mengikuti.

Ada beberapa hal yang dapat Anda lakukan untuk $project berat dengan cara ini. Lihat referensi operator untuk informasi lebih lanjut:

http://docs.mongodb.org/manual/reference/operator/aggregation/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara efisien untuk menyimpan data di MongoDB:dokumen tersemat vs dokumen individual

  2. c# pencarian peka huruf besar/kecil mongodb

  3. Pola repositori dengan MongoDB - beberapa unit kerja dengan satu transaksi

  4. Ekspor data JSON dan muat ke dalam Database Relasional

  5. Pembaruan luwak tidak diperbarui:{ ok:0, n:0, nModified:0 }