Sì. È così che javascript Array.prototype.slice()
il metodo funziona, utilizzato internamente da mongodb.
Secondo la Specifica del linguaggio ECMAScript® ,
Nel tuo caso relativeStart is -10
,k = max((-10+5),0), k = 0;
(dove, 5
è la lunghezza dell'array).
Quindi k
o skip
sarà sempre 0
, in questi casi.
Sì, l'operatore di proiezione funziona in questo modo. A meno che non sia un inclusion
o exclusion
è esplicitamente specificato nel parametro di proiezione, l'intero documento viene recuperato con gli operatori di proiezione come $slice
,$elemmatch
in corso di applicazione.
db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})
ritornerebbe:
{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }
Il secondo parametro per findOne()
il metodo è not only for simple projection
scopo, i campi non proiettato, solo se uno qualsiasi dei field
i nomi hanno un valore di 0
o 1
contro di loro. In caso contrario, viene restituito l'intero documento. Se un campo ha un projection operator
da applicare, sarebbe applied
e projected
.
Il meccanismo di proiezione sembra accada nel modo seguente, ogni volta che il $slice
operatore è coinvolto.
- Per impostazione predefinita, tutti i campi sarebbero inclusi per la proiezione.
- Di default tutti i campi i cui valori sono derivati in base all'operatore di proiezione,
$slice
, se veritiero , vengono sempre visualizzati, indipendentemente da quanto segue.
Passi in atto per l'esclusione o l'inclusione.
- L'elenco dei campi specificati nel parametro di proiezione viene accumulato nell'ordine specificato.
- Solo per il primo campo incontrato con valore '0' o '1' :Se il campo ha un valore '0' - allora è escluso e tutti i campi rimanenti sono contrassegnati per essere inclusi. Se un campo ha '1' - allora è incluso e tutti i campi rimanenti sono contrassegnati per essere esclusi.
- Per tutti i campi successivi, sono esclusi o inclusi in base ai loro valori.