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

Как да заявя само документи с най-новото времево клеймо от група?

Вие смесвате няколко метода тук, когато можете да правите всичко в тръбопровода за агрегиране. В противен случай е просто да подредите стъпките си в правилния ред:

db.collection.aggregate([
    {$sort: { createdOn: -1 }},
    {$group: { _id: "$itemId", 
        createdOn: {$first: "$createdOn"},
        field1: {$first: "$field1" },
        field2: {$first: "$field2" }
    }},
    {$match: { field1: "foo" }}
])

Така че сортирайте първо за най-новите документи. Групирайте по itemId (редът ще се поддържа за $first) и след това филтрирайте с $match, ако трябва. Но вашите групирани документи ще бъдат най-новите.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Groovy не можа да намери съвпадащ конструктор?

  2. Как да броим елементи в списък със списъци

  3. Mongodb текстово търсене в множество полета

  4. Възможно ли е да се направи mongodump на последните x записа от колекция?

  5. Основни заявки между дати $gte, $lte и т.н