Ini sebenarnya tidak masalah dan tidak pernah penting untuk implementasi "kerangka" apa pun dan saya tidak keberatan menjelaskan alasannya.
Setiap "kerangka" tunggal (seperti Mongoose, Mongoid, Doctrine, MongoEngine, dll, dll, dll) semuanya pada dasarnya dibangun di atas implementasi "driver" dasar yang dalam banyak kasus telah dikembangkan oleh staf MongoDB sendiri. Jadi fungsi dasar selalu ada bahkan jika Anda perlu "menyelidiki" ke tingkat yang lebih rendah untuk menggunakan metode "asli" tersebut.
Jadi di sini akan menjadi contoh penggunaan asli dalam kasus ini:
List.collection.update(
{},
{ "$push": {
"list": {
"$each": [ 1, 2, 3 ],
"$position": 0 }
}
},function(err,NumAffected) {
console.log("done");
});
Perhatikan metode "koleksi" yang digunakan dari model, yang mendapatkan detail koleksi "mentah" dari driver. Jadi, Anda menggunakan metodenya dan bukan metode "terbungkus" yang mungkin melakukan pemrosesan tambahan.
Alasan berikutnya dan paling mendasar adalah jika Anda tidak dapat menemukan metode dan aplikasi operator yang Anda butuhkan, ini fakta sederhananya.
Setiap operasi tunggal seperti yang digunakan oleh metode di setiap kerangka kerja dan metode driver dasar pada dasarnya adalah panggilan ke metode "runCommand" di API dasar. Jadi karena panggilan dasar itu tersedia di mana-mana ( dalam beberapa bentuk atau lainnya, karena memang harus demikian ), maka Anda dapat melakukan semua yang Anda temukan diiklankan di situs MongoDB dengan setiap implementasi bahasa di apa saja kerangka kerja.
Tetapi panggilan singkat untuk permintaan khusus Anda adalah, karena ini sebenarnya bukan metode panggilan tetapi hanyalah bagian dari argumen BSON yang diteruskan, maka tentu saja tidak ada batasan oleh driver bahasa tertentu untuk benar-benar menggunakan ini.
Jadi Anda dapat menggunakan argumen baru ini tanpa memperbarui ke versi terbaru. Tapi Anda mungkin akan mendapatkan beberapa metode bagus untuk melakukannya jika Anda benar-benar melakukannya.