sql >> Database >  >> NoSQL >> MongoDB

mongo $ slice query reverse index buiten bereik

Ja. Dat is hoe de javascript Array.prototype.slice() methode werkt, die intern wordt gebruikt door mongodb.

Volgens de ECMAScript®-taalspecificatie ,

In jouw geval is relativeStart is -10 ,k = max((-10+5),0), k = 0; (waar, 5 is de lengte van je array).

Vandaar k of skip is altijd 0 , in deze gevallen.

Ja, de projectie-operator werkt op die manier. Tenzij een inclusion of exclusion expliciet is gespecificeerd in de projectieparameter, wordt het hele document opgehaald met de projectie-operators zoals $slice ,$elemmatch wordt toegepast.

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

zou terugkeren:

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

De tweede parameter voor de findOne() methode is not only for simple projection doel, velden zijn niet geprojecteerd, alleen als een van de field namen hebben een waarde van 0 of 1 tegen hun. Zo niet, dan wordt het hele document teruggestuurd. Als een veld een projection operator heeft om te worden toegepast, is het applied en projected .

Het projectiemechanisme lijkt gebeuren op de onderstaande manier, wanneer de $slice operator is erbij betrokken.

  • Standaard worden alle velden opgenomen voor projectie.
  • Standaard alle velden waarvan de waarden zijn afgeleid op basis van de projectie-operator, $slice , indien waarheidsgetrouw , worden altijd weergegeven, ongeacht de onderstaande.

Stappen die plaatsvinden voor uitsluiting of opname.

  • De lijst met velden gespecificeerd in de projectieparameter wordt verzameld in de gespecificeerde volgorde.
  • Alleen voor het eerste gevonden veld met de waarde '0' of '1' :Als het veld een waarde '0' heeft - dan wordt het uitgesloten, en alle overige velden zijn gemarkeerd om te worden opgenomen. Als een veld '1' heeft - dan wordt het opgenomen, en alle overige velden zijn gemarkeerd om te worden uitgesloten.
  • Voor alle volgende velden worden ze uitgesloten of opgenomen op basis van hun waarden.


  1. Zoeken in MongoDB

  2. brew install php56-mongo Commando Werkt niet

  3. Hoe een unieke e-mail te garanderen, gebruikersnaam gaat MongoDB binnen met Mongoose

  4. Hoe exporteer ik alle collecties in MongoDB?