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.