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

Di mongodb, tahukah indeks elemen array yang cocok dengan operator $in?

Jadi katakanlah kita memiliki yang berikut ini dalam koleksi database:

> db.couponmodel.find()
{ "_id" : "a" }
{ "_id" : "b" }
{ "_id" : "c" }
{ "_id" : "d" }

dan kami ingin mencari id berikut di koleksi

var coupons_ids = ["c", "a" ,"z"];

Kami kemudian harus membangun keadaan proyeksi dinamis sehingga kami dapat memproyeksikan indeks yang benar, jadi kami harus memetakan setiap id ke indeks yang sesuai

var conditions = coupons_ids.map(function(value, index){
    return { $cond: { if: { $eq: ['$_id', value] }, then: index, else: -1 } };
});

Kemudian kita dapat menyuntikkan ini ke pipa agregasi kita

db.couponmodel.aggregate([
    { $match : { '_id' : { $in : coupons_ids } } },
    { $project: { indexes : conditions } },
    { $project: {
        index : {
            $filter: { 
                input: "$indexes", as: "indexes", cond: { $ne: [ "$$indexes", -1 ] }
                }
            }
        } 
    },
    { $unwind: '$index' }
]);

Menjalankan di atas sekarang akan menampilkan setiap _id dan indeks yang sesuai dalam coupons_ids larik

{ "_id" : "a", "index" : 1 }
{ "_id" : "c", "index" : 0 }

Namun kami juga dapat menambahkan lebih banyak item ke pipa di akhir dan referensi $index untuk mendapatkan indeks yang cocok saat ini.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah meteor memperbarui versi mongodb secara otomatis?

  2. luwak menemukan semua tidak mengirim panggilan balik

  3. Array bersarang $pull query menggunakan driver C# MongoDB

  4. Menangani hubungan di meteor-angular

  5. Kueri array bersarang di MongoDb