MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongo $slice index inverse de la requête hors plage

Oui. C'est ainsi que le javascript Array.prototype.slice() la méthode fonctionne, qui est utilisée en interne par mongodb.

Conformément à la Spécification du langage ECMAScript® ,

Dans votre cas, relativeStart is -10 ,k = max((-10+5),0), k = 0; (où, 5 est la longueur de votre tableau).

D'où k ou skip sera toujours 0 , dans ces cas.

Oui, l'opérateur de projection fonctionne de cette façon. Sauf une inclusion ou exclusion est explicitement spécifié dans le paramètre de projection, le document entier est récupéré avec les opérateurs de projection tels que $slice ,$elemmatch en cours d'application.

db.items.findOne({},{"_id":1,"List": { "$slice": [-10, 3 ] }})

renverrait :

{ "_id" : ObjectId("542babf265f5de9a0d5c2928"), "List" : [ 1, 2, 3 ] }

Le deuxième paramètre de findOne() la méthode est not only for simple projection but, les champs ne sont pas projeté, uniquement si l'un des field les noms ont une valeur de 0 ou 1 contre eux. Si ce n'est pas le cas, tout le document est renvoyé. Si un champ a un projection operator pour être appliqué, il serait applied et projected .

Le mécanisme de projection semble se produire de la manière ci-dessous, chaque fois que le $slice l'opérateur est impliqué.

  • Par défaut, tous les champs seraient inclus pour la projection.
  • Par défaut, tous les champs dont les valeurs sont dérivées en fonction de l'opérateur de projection, $slice , si véridique , sont toujours affichés, indépendamment de ce qui suit.

Étapes en cours pour l'exclusion ou l'inclusion.

  • La liste des champs spécifiés dans le paramètre de projection est cumulée dans l'ordre spécifié.
  • Seulement pour le premier champ rencontré avec la valeur '0' ou '1' :Si le champ a une valeur '0' - alors il est exclu, et tous les champs restants sont marqués pour être inclus. Si un champ a '1' - alors il est inclus, et tous les champs restants sont marqués pour être exclus.
  • Pour tous les champs suivants, ils sont exclus ou inclus en fonction de leurs valeurs.