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

MongoDB:Meminta beberapa koleksi dengan dua kueri?

Mencoba 'membuat kueri "relasional" di MongoDB akan menjadi latihan yang membuat frustrasi. Skema Anda menyimpan beberapa informasi (peringkat posting) dalam satu koleksi dan informasi lainnya (usia penulis) dalam koleksi yang berbeda, tetapi semua kueri MongoDB beroperasi pada koleksi tunggal. Kecuali Anda mendenormalisasi data Anda (yang Anda katakan tidak ingin Anda lakukan), Anda memerlukan metode dua langkah untuk membuatnya bekerja.

Pendekatan yang seharusnya berhasil adalah dengan membuat larik ID penulis dan menggunakannya dalam kueri koleksi kiriman menggunakan '$in'. Berikut tampilannya dalam JavaScript menggunakan shell mongo:

> var authorList = [];
> var authorCursor = db.authors.find({age:{$gt:19,$lt:25}},{"_id":1});
> while(authorCursor.hasNext()){authorList.push(authorCursor.next()["_id"])};
> db.posts.find({"author.$id":{$in:authorList},rating:{$gt:6,$lt:9}});

Baris pertama membuat array kosong. Baris kedua membuat kursor yang akan memilih _id bidang semua penulis dalam rentang usia target Anda. Baris ketiga menggunakan kursor untuk mengisi array penulis _id s. Baris keempat menampilkan semua posting yang sesuai dengan kriteria target Anda:penulis _id dalam daftar kami hanya membuat dan memberi peringkat dalam rentang yang Anda tentukan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pekerjaan apa pun dengan kunci Mongodb tidak dapat berisi file . atau $?

  2. Lakukan penyatuan di mongoDB

  3. Bagaimana cara menghapus satu 'dokumen' dengan 'ID' menggunakan Driver C# Resmi untuk MongoDB?

  4. mongoengine - Abaikan bidang tambahan untuk validasi skema

  5. Tidak dapat menginstal driver php mongodb di mac os 10.9