To właściwie nie ma znaczenia i nigdy nie ma znaczenia w przypadku implementacji „ramowej” i nie mam nic przeciwko wyjaśnianiu dlaczego.
Każda pojedyncza "framework" (taka jak Mongoose, Mongoid, Doctrine, MongoEngine, itd., itd., itd.) jest zasadniczo zbudowana na podstawowej implementacji "sterownika", która w większości przypadków została opracowana przez samych pracowników MongoDB. Tak więc podstawowa funkcjonalność jest zawsze dostępna, nawet jeśli musisz „zagłębić się” w dół, aby użyć tych „natywnych” metod.
Oto przykład natywnego użycia w tym przypadku:
List.collection.update(
{},
{ "$push": {
"list": {
"$each": [ 1, 2, 3 ],
"$position": 0 }
}
},function(err,NumAffected) {
console.log("done");
});
Zwróć uwagę na metodę „zbierania” zastosowaną w modelu, która polega na pobieraniu „surowych” szczegółów kolekcji ze sterownika. Więc używasz tej metody, a nie jakiejś „opakowanej” metody, która może wykonywać dodatkowe przetwarzanie.
Następnym i najbardziej podstawowym powodem jest to, że jeśli nie możesz znaleźć metody i zastosowania operatorów, których potrzebujesz, jest to prosty fakt.
Każda operacja używana przez metody w każdej strukturze i podstawowa metoda sterownika jest zasadniczo wywołaniem metody „runCommand” w podstawowym interfejsie API. Skoro więc to podstawowe wywołanie jest dostępne wszędzie (w takiej czy innej formie, bo tak musi być ), możesz zrobić wszystko, co jest reklamowane w witrynie MongoDB z każdą implementacją języka na dowolnym ramy.
Ale krótkie wezwanie do twojej konkretnej prośby jest takie, ponieważ w rzeczywistości nie jest to metoda call, ale jest po prostu częścią przekazanych argumentów BSON, wtedy oczywiście nie ma ograniczeń ze strony konkretnego sterownika języka, aby faktycznie z niego korzystać.
Możesz więc użyć tych nowych argumentów, oczywiście bez aktualizacji do najnowszej wersji. Ale prawdopodobnie otrzymasz kilka fajnych metod, jeśli faktycznie to zrobisz.