Ano. Tak funguje javascript Array.prototype.slice()
metoda funguje, kterou interně používá mongodb.
Podle specifikace jazyka ECMAScript® ,
Ve vašem případě relativeStart is -10
,k = max((-10+5),0), k = 0;
(kde 5
je délka vašeho pole).
Proto k
nebo skip
bude vždy 0
, v těchto případech.
Ano, operátor projekce tak funguje. Pokud není inclusion
nebo exclusion
je explicitně specifikováno v parametru projekce, celý dokument se načte pomocí operátorů projekce, jako je $slice
,$elemmatch
se používá.
db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})
by se vrátilo:
{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }
Druhý parametr k findOne()
metoda je not only for simple projection
pole nejsou promítnuto, pouze pokud některé z field
jména mají hodnotu 0
nebo 1
proti nim. Pokud ne, vrátí se celý dokument. Pokud má některé pole projection operator
aby bylo použito, bylo by applied
a projected
.
Mechanismus projekce zdá se k následujícímu způsobu, kdykoli $slice
je zapojen operátor.
- Ve výchozím nastavení budou pro promítání zahrnuta všechna pole.
- Ve výchozím nastavení jsou všechna pole, jejichž hodnoty jsou odvozeny na základě operátoru projekce
$slice
, je-li pravdivé , jsou zobrazeny vždy, bez ohledu na níže uvedené.
Kroky provádějící vyloučení nebo zahrnutí.
- Seznam polí zadaných v parametru projekce se shromažďuje v určeném pořadí.
- Pouze pro první pole s hodnotou '0' nebo '1' :Pokud má pole hodnotu '0' - pak je vyloučeno a všechna zbývající pole jsou označena jako zahrnutá. Pokud má pole '1' - pak je zahrnuto a všechna zbývající pole jsou označena jako vyloučená.
- Všechna následující pole jsou vyloučena nebo zahrnuta na základě jejich hodnot.