MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongo $slice обратен индекс на заявка извън диапазона

да Ето как javascript Array.prototype.slice() методът работи, който се използва вътрешно от mongodb.

Съгласно Езикова спецификация ECMAScript® ,

Във вашия случай relativeStart is -10 ,k = max((-10+5),0), k = 0; (където, 5 е дължината на вашия масив).

Следователно k или skip винаги ще бъде 0 , в тези случаи.

Да, проекционният оператор работи по този начин. Освен ако не е inclusion или exclusion е изрично посочен в параметъра за проекция, целият документ се извлича с операторите за проекция като $slice ,$elemmatch се прилага.

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

ще върне:

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

Вторият параметър към findOne() методът е not only for simple projection предназначение, полетата са сната проектирано, само ако някое от field имената имат стойност 0 или 1 Срещу тях. Ако не се връща целият документ. Ако някое поле има projection operator за да бъде приложен, ще бъде applied и projected .

Прожекционният механизъм изглежда да се случи по следния начин, когато $slice участва оператор.

  • По подразбиране всички полета ще бъдат включени за проекция.
  • По подразбиране всички полета, чиито стойности се извличат въз основа на оператора за проекция, $slice , ако е истина , винаги се показват, независимо от по-долу.

Стъпки, предприети за изключване или включване.

  • Списъкът с полета, посочени в параметъра на проекцията, се натрупват в посочения им ред.
  • Само за първото срещано поле със стойност „0“ или „1“ :Ако полето има стойност '0' - то е изключено и всички останали полета са маркирани за включване. Ако поле има '1' - то е включено и всички останали полета са маркирани за изключване.
  • За всички следващи полета те се изключват или включват въз основа на техните стойности.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SailsJS &MongoDB Проблеми с Framework Aggregation с персонализирани заявки

  2. заявка с mongoose

  3. Как да изтрия вложен обект въз основа на неговия ObjectId?

  4. MongoError:пулът от сървърни екземпляри беше унищожен

  5. Как да върна резултатите от Mongoose от метода за намиране?