mongodb - 尝试在 mongo db 3.0 上限制 Group By 数据

标签 mongodb mongodb-query

我曾尝试通过 Mongo DB 3.0 上的数据限制组,但似乎没有合适的选项来执行此操作。

我想根据数组中的日期 dateCreated 和对应的记录数/天显示每天的 5 条最新记录

db.entries.find().limit(1).pretty();
{
    "_id" : "bd348fb4dd38dd7a2",
    "className" : "com.model.Entry",
    "name" : "yQLs3T5NCJocPlOPuLgyEkQ9",
    "description" : "4Z09BNPQNFhFiMbjqL RWC5SMs0d0XzogqdNmjk5dx1mw9roHgRrl8ljbHo16p1WTlNYU",
    "account" : DBRef("accounts", "248a3-448b-a912-6573f23d34a5"),
    "iconUrl" : "gA9QTuqYv9wZq1xKM37jdL",
    "userCreatedBy" : DBRef("users", "8044-45d2-8567-a6cb808ce164"),
    "timezone" : "Atlantic/Faroe",
    "globalAccess" : false,
    "tags" : [
        {
            "_id" : "8926079483331",
            "category" : "PPq5k",
            "value" : "NdKFQq",
            "description" : "uDQVnhJ2tu5XWHinb",
            "origin" : "User",
            "dateCreated" : ISODate("2021-07-16T18:20:41.731Z"),
            "dateModified" : ISODate("2021-07-16T18:20:53.319Z"),
            "externalId" : "xkblzrwE"
        }
{
            "_id" : "89389483331",
            "category" : "PPe5k",
            "value" : "NdKFQq",
            "description" : "uDQVnhJ2tu5XWHinb",
            "origin" : "User",
            "dateCreated" : ISODate("2021-07-16T18:20:41.731Z"),
            "dateModified" : ISODate("2021-07-16T18:20:53.319Z"),
            "externalId" : "xkblzrwE"
        }
]}

我期待的输出:

[2021-07-16 (Date)-> (5 Latest Entries) , 2 (total records for that day) ]

我试过使用下面的解决方案 How to get lastest N records of each group in mongodb?

切片在 mongo 3.0 上不可用,我有点卡在这里

最佳答案

我不确定您是否可以使用聚合,但下面的聚合可以为您提供所需的结果。

db.collection.aggregate([
  {
    "$unwind": "$tags"
  },
  {
    $match: {
      "tags.dateCreated": {
        "$gte": ISODate("2021-07-16")
      }
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$tags"
    }
  },
  {
    "$limit": 5
  }
])

Playground

如果您有任何问题,请随时问我。

关于mongodb - 尝试在 mongo db 3.0 上限制 Group By 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68450400/

相关文章:

node.js - 在 Mongoose 3 中节省麻烦

ruby - 你如何创建一个 mongoid 对象的副本/复制?

mongodb - 文档DB和模拟ACID

mongodb - mongodb 在两个集合之间加入

c++ - MongoDB C++ 驱动程序——通过引用传递查询对象在随后使用其排序时引发错误

java - Spring 和 MongoDB : SAXParseException while reading Bean Definitions

java - Morphia:使用已弃用的配置选项对集合进行索引(复合键索引)

regex - 在 mongodb 聚合中的 $expr 中使用 $regex

regex - 如何在mongodb中搜索逗号分隔的数据

mongodb - 聚合后 Mongoose 填充