簡體   English   中英

從 MongoDB 中的日期集合中獲取不同的日期

[英]Get distinct days from a collection of dates in MongoDB

我想用突出顯示的單元格填充日期范圍選擇器顯示,其中數據存在於我的數據庫中。 因此,我需要將我的收藏減少到記錄存在的日期數組,例如

// collection
[{
  timestamp: ISODate("2020-01-28T20:42:00.000Z"),
  data: 1,
},{
  timestamp: ISODate("2020-01-28T18:42:00.000Z"),
  data: 10,
},{
  timestamp: ISODate("2020-01-28T15:42:00.000Z"),
  data: 100,
},{
  timestamp: ISODate("2020-01-25T15:42:00.000Z"),
  data: 1000,
},{
  timestamp: ISODate("2020-01-17T15:42:00.000Z"),
  data: 10000,
}]

減少到:

['2020-01-28', '2020-01-25', '2020-01-17']

存儲在我的數據庫中的數據的性質意味着如果給定日期存在任何數據,那么該日期存在大量數據。 因此,查詢給定日期范圍的整個集合然后減少結果會很慢。

是否有一種快速(更)方法來查詢集合以返回數據存在的不同日期集?

據我所知,您只能從 mongodb 查詢中獲得 json 格式的結果。

我可以得到以下結果,它可以很容易地轉換為 javascript 代碼中的字符串數組:

[
  {
    "_id": "20200125"
  },
  {
    "_id": "20200117"
  },
  {
    "_id": "20200128"
  }
]

我在 $project 階段使用了$dateToString聚合運算符。

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      date: {
        $dateToString: {
          format: "%Y%m%d",
          date: "$timestamp"
        }
      }
    }
  },
  {
    $group: {
      _id: "$date"
    }
  }
])

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM