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

Добавете някакъв вид номер на ред към агрегатна команда/конвейер на mongodb

Не съм сигурен за ефективността при големи заявки, но това е поне опция.

Можете да добавите резултатите си към масив чрез групиране/натискане и след това развъртете с includeArrayIndex така:

[
  {$match: {author: {$ne: 1}}},
  {$limit: 10000},
  {$group: {
    _id: 1,
    book: {$push: {title: '$title', author: '$author', copies: '$copies'}}
  }},
  {$unwind: {path: '$book', includeArrayIndex: 'rownum'}},
  {$project: {
    author: '$book.author',
    title: '$book.title',
    copies: '$book.copies',
    rownum: 1
  }}
]

Сега, ако вашата база данни съдържа голямо количество записи и възнамерявате да пагинирате, можете да използвате етапа $skip и след това $limit 10 или 20 или каквото искате да показвате на страница и просто да добавите числото от $skip етап до вашия rownum и ще получите реалната позиция, без да се налага да натискате всичките си резултати, за да ги изброите.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Условие на заявка за MongoDb при сравняване на 2 полета

  2. Създайте многоезичен текстов индекс в MongoDB

  3. Избягвайте предупреждението за оттегляне на текущия анализатор на URL низове, като зададете useNewUrlParser на true

  4. MongoDB отделна команда

  5. Преведете FilterDefinition<TDocument> към обикновена json mongo заявка, която мога да изпълнявам в mongo shell