Na tom vlastně nezáleží a nikdy nezáleží na jakékoli implementaci „rámce“ a nevadí mi vysvětlovat proč.
Každý jednotlivý „rámec“ (jako je Mongoose, Mongoid, Doctrine, MongoEngine atd., atd., atd.) je v podstatě postaven na základní implementaci „ovladače“, kterou ve většině případů vyvinuli sami zaměstnanci MongoDB. Základní funkčnost je tedy vždy k dispozici, i když se potřebujete „ponořit“ až na úroveň, abyste mohli používat tyto „nativní“ metody.
Zde by byl v tomto případě příklad nativního použití:
List.collection.update(
{},
{ "$push": {
"list": {
"$each": [ 1, 2, 3 ],
"$position": 0 }
}
},function(err,NumAffected) {
console.log("done");
});
Všimněte si metody "shromažďování" použité z modelu, která získává podrobnosti o "raw" sběru z ovladače. Takže používáte jeho metodu a ne nějakou "zabalenou" metodu, která může provádět dodatečné zpracování.
Dalším a nejzákladnějším důvodem je, že pokud nemůžete najít metodu a aplikaci operátorů, které potřebujete, je to jednoduchý fakt.
Každá jednotlivá operace používaná metodami v každém frameworku a základní metodě ovladače je v podstatě voláním metody "runCommand" v základním API. Protože je tedy základní volání dostupné všude (v té či oné formě, protože musí být), pak můžete dělat vše, co najdete inzerované na webu MongoDB s každou jazykovou implementací na jakékoli rámec.
Krátká výzva k vašemu konkrétnímu požadavku je však taková, že se ve skutečnosti nejedná o metodu call, ale je jednoduše součástí předávaných argumentů BSON, pak samozřejmě neexistuje žádné omezení konkrétním jazykovým ovladačem, aby to skutečně použil.
Takže můžete použít tyto nové argumenty bez aktualizace na nejnovější verzi. Pravděpodobně k tomu ale získáte nějaké pěkné metody, pokud to skutečně uděláte.