sql >> Base de Datos >  >> NoSQL >> MongoDB

mongo $slice consulta índice inverso fuera de rango

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.