Sepertinya Anda telah menambahkan dua bidang age_rank
, average_age
. Ini adalah bidang yang dihitung secara efektif berdasarkan data yang sudah Anda miliki. Jika saya memberi Anda dokumen dengan tampilan halaman dan ulang tahun pengguna, akan sangat mudah bagi kode klien untuk menemukan min/maks, rata-rata, dll.
Tampaknya bagi saya Anda meminta MongoDB untuk melakukan agregasi untuk sisi server Anda. Tapi Anda menambahkan batasan yang tidak ingin Anda gunakan Peta/Kurangi?
Jika saya memahami pertanyaan Anda dengan benar, Anda mencari sesuatu di mana Anda dapat mengatakan "tambahkan item ini ke array dan minta semua item dependen memperbarui sendiri" ? Anda tidak ingin pembaca melakukan logika apa pun, Anda ingin semuanya terjadi "secara ajaib" di sisi server.
Jadi, ada tiga cara berbeda untuk mengatasi hal ini, tetapi hanya satu yang tersedia saat ini:
- Tulis logika ini di sisi klien. Kedengarannya tidak seperti solusi yang Anda inginkan, tetapi itu akan berhasil. Jika Anda memiliki data yang mendasarinya, melakukan max/min/med/avg seharusnya cukup sepele di sebagian besar bahasa.
- Manfaatkan fitur mendatang untuk Agregasi . Ini tidak dijadwalkan sampai 1.9.x. Agregasi yang ditingkatkan akan memungkinkan untuk mengekstrak data yang Anda cari, namun, Anda masih harus menulis kueri yang sesuai. DB yang mendasarinya masih tidak berisi data yang Anda cari.
- Anda memerlukan pemicu . Jika Anda benar-benar ingin DB selalu konsisten dan berisi data yang diringkas, maka inilah yang Anda butuhkan. Namun, fitur pemicu belum ada.
Sayangnya, satu-satunya pilihan Anda saat ini adalah #1. Untungnya, saya tahu beberapa orang yang berhasil menggunakan opsi #1.