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

Pilih Elemen Array yang Cocok dan Kembalikan Bidang yang Dipilih

Jika Anda hanya ingin memilih bidang tertentu dari array untuk dikembalikan, maka Anda berbicara tentang "membentuk kembali" dokumen. Untuk apa pun di luar pemilihan bidang "dasar", ini berarti menggunakan .aggregate() sebagai metode alih-alih .find() .

Jadi dua persyaratan di sini adalah untuk $filter pada konten array untuk "mencocokkan" dan kembali, serta $map "bidang yang akan dikembalikan" yang sebenarnya dari larik itu sendiri:

User.aggregate([
  { "$match": { "children.name": "def" } },
  { "$project": {
     "name": 1,
     "children": {
       "$map": {
         "input": {
           "$filter": {
             "input": "$children",
             "as": "c",
             "cond": { "$eq": [ "$$c.name", "def" ] } 
           }
         },
         "as": "c",
         "in": {
           "age": "$$c.age",
           "height": "$$c.height"
         }
       }
     }
  }}
])

Di sini $filter digunakan untuk mengurangi isi array menjadi hanya yang cocok dengan kondisi. Menjadi mereka yang memiliki "name" yang sama properti sebagai nilai "def" . Ini kemudian diteruskan sebagai "input" parameter ke$map .

$map operator berfungsi seperti rekan bahasa lainnya karena "membentuk ulang array" untuk mengembalikan sesuatu sesuai dengan apa yang Anda tentukan di "in" parameter. Jadi di sini kita sebenarnya hanya secara eksplisit menamai properti dan menggunakan penetapan variabel di sana untuk elemen larik saat ini yang sedang diproses sehingga inilah yang dikembalikan sebagai konten larik "baru".

Hasil keseluruhan adalah array, berisi:

  1. Hanya item yang cocok dengan ketentuan yang ditentukan.
  2. Hanya bidang yang ditentukan untuk ditampilkan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo $regex dengan Tanda kurung dan Batas Kata

  2. $geoNear cocok dengan array terdekat

  3. mongoDB:bagaimana cara memeriksa keberadaan kunci dict dalam dict bersarang?

  4. Array grup agregat MongoDB ke kunci:nilai jumlah

  5. Indeks MongoDB pada subdokumen tidak digunakan berdasarkan sintaks kueri