sql >> Databáze >  >> NoSQL >> MongoDB

Přidejte nějaké číslo řádku do agregovaného příkazu / potrubí mongodb

Nejste si jisti výkonem ve velkých dotazech, ale toto je alespoň možnost.

Své výsledky můžete přidat do pole seskupením/posunutím a poté je uvolnit pomocí includeArrayIndex takhle:

[
  {$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
  }}
]

Nyní, pokud vaše databáze obsahuje velké množství záznamů a máte v úmyslu stránkovat, můžete použít fázi $skip a poté $limit 10 nebo 20 nebo cokoliv, co chcete zobrazit na stránce, a jednoduše přidat číslo z $skip fázi do svého rownum a získáte skutečnou pozici, aniž byste museli tlačit všechny své výsledky, abyste je vyjmenovali.



  1. Jak spustit redis-server na jiném portu, než je výchozí port 6379 v ubuntu

  2. spring server se nemůže připojit k redis pomocí klienta jedis

  3. Jaký je maximální počet parametrů předávaných dotazu $in v MongoDB?

  4. Jak ověřím členy pole pole?