如何在mongodb中获取每个组的最新N条记录?

费尔南达·芬蒂利

每个城市都有几个条目。如何获得每个城市的最新3个条目?喜欢:

City1
记录1
记录2
记录3

City2
记录1
记录2
记录3

City3
记录1
记录2
记录3

模式:

var schema = mongoose.Schema({
  city: {type: String},
  title: {type: String},
  created: {type: Number, default: Math.floor(new Date() / 1000)}
})

我尝试过的代码:

Collection
.find('location $in ' + cities)
.aggregate({$group: {location: "$location"}})
.sort('created: 1')
.limit(3).exec(function(err, docs) { res.render('index', { hash: docs }); });

因此,如何执行查询结果:每个城市的3个最新标题

萨拉斯·奈尔

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,...的顺序排列所有最近的标题。如果对此结果感到满意,因为您已经在mostRecentTitle的索引0、1和2中得到了结果。其他标题可以在应用程序端简单地忽略。

仍然,如果您不满意,请对输出集合'aggr_out'进行更新,并从该集合中读取数据。查询是

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

上面的操作将对mostRecentTitle数组进行切片,使其具有最新的三个标题。阅读此收藏以获得所需的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在mongodb中获取每个组的最新记录?

来自分类Dev

获取每个类别中的N条最新记录。Postgres

来自分类Dev

如何从ActiveRecord中的每个组获取最新记录?

来自分类Dev

如何通过获取每个组中的最后一条记录来删除重复的记录

来自分类Dev

如何获取每个组中的最新记录并检查是否是唯一记录?

来自分类Dev

访问中每个组sql的前n条记录

来自分类Dev

不了解查询如何从每个组中检索前n条记录

来自分类Dev

通过SQL获取每个组的最新记录

来自分类Dev

Laravel 获取每个组的最新记录

来自分类Dev

使用where条件从表中获取最新的N条记录

来自分类Dev

如何在PostgreSQL中获取最新记录?

来自分类Dev

如何在oracle中ID的每个重复行仅获取一条记录?

来自分类Dev

MYSQL-选择每个库存组的最新3条记录

来自分类Dev

获取记录组中的最新记录

来自分类Dev

如何使用BigQuery获取每个记录组的最后3条记录的平均值?

来自分类Dev

我如何获取mongodb中每组记录的最新记录

来自分类Dev

如何从mongodb中的arraylist中获取一条记录

来自分类Dev

获取每个 SerialNumber 的第 n 条记录

来自分类Dev

如何从mysql中的每个表中导出N条记录?

来自分类Dev

Google Spreadsheet Queries:如何获取每个组的第一条记录?

来自分类Dev

Google Spreadsheet Queries:如何获取每个组的第一条记录?

来自分类Dev

如何获取每个值的 1 条记录

来自分类Dev

Linq:嵌套子查询中的动态Where子句获取每个组的最新记录

来自分类Dev

获取每个组的第一条记录的列表

来自分类Dev

获取每个组的第一条记录

来自分类Dev

每个项目mongodb组的按日期最新记录

来自分类Dev

如何在Cassandra 2.2中获取前5条记录

来自分类Dev

如何在Cassandra 2.2中获取前5条记录

来自分类Dev

如何在phpmyadmin ui中获取1000条记录

Related 相关文章

  1. 1

    如何在mongodb中获取每个组的最新记录?

  2. 2

    获取每个类别中的N条最新记录。Postgres

  3. 3

    如何从ActiveRecord中的每个组获取最新记录?

  4. 4

    如何通过获取每个组中的最后一条记录来删除重复的记录

  5. 5

    如何获取每个组中的最新记录并检查是否是唯一记录?

  6. 6

    访问中每个组sql的前n条记录

  7. 7

    不了解查询如何从每个组中检索前n条记录

  8. 8

    通过SQL获取每个组的最新记录

  9. 9

    Laravel 获取每个组的最新记录

  10. 10

    使用where条件从表中获取最新的N条记录

  11. 11

    如何在PostgreSQL中获取最新记录?

  12. 12

    如何在oracle中ID的每个重复行仅获取一条记录?

  13. 13

    MYSQL-选择每个库存组的最新3条记录

  14. 14

    获取记录组中的最新记录

  15. 15

    如何使用BigQuery获取每个记录组的最后3条记录的平均值?

  16. 16

    我如何获取mongodb中每组记录的最新记录

  17. 17

    如何从mongodb中的arraylist中获取一条记录

  18. 18

    获取每个 SerialNumber 的第 n 条记录

  19. 19

    如何从mysql中的每个表中导出N条记录?

  20. 20

    Google Spreadsheet Queries:如何获取每个组的第一条记录?

  21. 21

    Google Spreadsheet Queries:如何获取每个组的第一条记录?

  22. 22

    如何获取每个值的 1 条记录

  23. 23

    Linq:嵌套子查询中的动态Where子句获取每个组的最新记录

  24. 24

    获取每个组的第一条记录的列表

  25. 25

    获取每个组的第一条记录

  26. 26

    每个项目mongodb组的按日期最新记录

  27. 27

    如何在Cassandra 2.2中获取前5条记录

  28. 28

    如何在Cassandra 2.2中获取前5条记录

  29. 29

    如何在phpmyadmin ui中获取1000条记录

热门标签

归档