Sí. Así es como javascript Array.prototype.slice()
funciona el método, que es utilizado internamente por mongodb.
Según la ECMAScript® Language Specification ,
En su caso, relativeStart is -10
,k = max((-10+5),0), k = 0;
(donde, 5
es la longitud de su matriz).
Por lo tanto k
o skip
siempre será 0
, en estos casos.
Sí, el operador de proyección funciona de esa manera. A menos que una inclusion
o exclusion
se especifica explícitamente en el parámetro de proyección, todo el documento se recupera con los operadores de proyección como $slice
,$elemmatch
siendo aplicado.
db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})
devolvería:
{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }
El segundo parámetro de findOne()
El método es not only for simple projection
propósito, los campos no proyectado, solo si alguno de los field
los nombres tienen un valor de 0
o 1
contra ellos. Si no, se devuelve el documento completo. Si algún campo tiene un projection operator
para ser aplicado, sería applied
y projected
.
El mecanismo de proyección parece suceda de la siguiente manera, siempre que el $slice
el operador está involucrado.
- De forma predeterminada, todos los campos se incluirían para la proyección.
- De forma predeterminada, todos los campos cuyos valores se derivan en función del operador de proyección,
$slice
, si es veraz , siempre se muestran, independientemente de lo siguiente.
Pasos que se están dando para la exclusión o inclusión.
- La lista de campos especificados en el parámetro de proyección se acumulan en el orden especificado.
- Solo para el primer campo encontrado con valor '0' o '1' :Si el campo tiene un valor '0', entonces se excluye y todos los campos restantes se marcan para ser incluidos. Si un campo tiene un '1', entonces se incluye y todos los campos restantes se marcan para ser excluidos.
- Para todos los campos subsiguientes, se excluyen o incluyen en función de sus valores.