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

Temukan setelah mengisi luwak

@Jason Cust sudah menjelaskannya dengan cukup baik - dalam situasi ini seringkali solusi terbaik adalah mengubah skema untuk mencegah kueri Users berdasarkan properti dokumen yang disimpan dalam koleksi terpisah.

Inilah solusi terbaik yang dapat saya pikirkan yang tidak akan memaksa Anda untuk melakukan itu (karena Anda mengatakan dalam komentar bahwa Anda tidak bisa).

Users.find().populate({
  path: 'email',
  match: {
    type: 'Gmail'
  }
}).exec(function(err, users) {
  users = users.filter(function(user) {
    return user.email; // return only users with email matching 'type: "Gmail"' query
  });
});

Apa yang kami lakukan di sini hanya mengisi email s pencocokan kueri tambahan (match opsi di .populate() panggilan) - jika tidak email bidang di Users dokumen akan disetel ke null .

Yang tersisa hanyalah .filter pada users . yang dikembalikan array, seperti dalam pertanyaan awal Anda - hanya dengan pemeriksaan yang lebih sederhana dan sangat umum. Seperti yang Anda lihat - baik email ada atau tidak.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pembaruan MongoDB. Mencoba mengatur satu bidang dari properti yang lain

  2. Bagaimana saya bisa memasukkan banyak objek dengan MongoDB &Node.js?

  3. C# - MongoDB - Perbarui elemen di dalam Dokumen Bersarang

  4. Bisakah saya menggunakan MongoDB sebagai pengganti CoreData di iOS?

  5. Kueri dan jumlahkan semuanya dengan luwak