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

Как да получите последните N записа на всяка група в mongodb?

В mongoDB 3.2 можете да направите това, като използвате обобщената заявка от следния формуляр:

db.collection.aggregate(
  {$sort: {created: -1}},
  {$group: {_id:'$city', title:{$push: '$title'}},
  {$project: {_id:0, city: '$_id', mostRecentTitle: {$slice: ['$title', 0, 2]}}}
)

Много е трудно да се постигне същото с помощта на mongoDB 3.0. Има много мръсен трик, за да се постигне това в 3.0. Това включва няколко стъпки и друго събиране.

Първо направете обобщение и изведете резултата във временна колекция, наречена „aggr_out“

Заявка:

db.collection.aggregate([
  {$sort: {created: -1}},
  {$group: {_id:'$city', title:{$push: '$title'}},
  {$project: {city: '$_id', mostRecentTitle: '$title'}},
  {$out: 'aggr_out'}]
)

Използвайки горната заявка, mostRecentTitle ще има всички скорошни заглавия, подредени от индекс 0, 1, 2, ... Ако сте доволни от този резултат, използвайте това, тъй като вече имате резултата в индекси 0,1 и 2 на mostRecentTitle. Други заглавия могат просто да бъдат игнорирани от страната на приложението.

И все пак, ако не сте доволни, направете актуализация на изходната колекция 'aggr_out' и прочетете данните от тази колекция. Заявката е,

db.aggr_out.update(
  {},
  {$push: {
    mostRecentTitle: {$each:[], $slice:3}
    }
  }
)

Горната операция ще раздели масива mostRecentTitle, така че да съдържа най-новите три заглавия. Прочетете тази колекция, за да получите желания резултат.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да показвате произволни данни без схема в HTML с node.js / mongodb

  2. Ред на ключовите стойности в mongoDb

  3. Node.js:Документ, който връща недефиниран - Mongoose

  4. Създаване на MongoDB уникален ключ с C#

  5. Как да получите списък с бази данни и колекции на mongodb от приложение ruby ​​on rails