[英]How to sort by year using a date string in PyMongo Aggregate
我和另一位程序員在這個問題上兜圈子,似乎無法在網上找到答案。
我們有一個 MongoDB 集合,其中插入了從 API 中提取的文檔。 每個文檔都有一個名為attributes.created
的字段,它是一個字符串。
字符串的格式是這樣的:“2019-04-25T07:06:02Z”
我們的目標是每年獲得一份計數清單。 我們可以在一個不同的集合上執行此操作,該集合只有一個 int 值的年份......但我們無法在這里弄清楚,因為我們需要將字符串轉換為日期。
我們的聚合 function 的示例是:
publicationsByYear = collection.aggregate([
{"$group": {"_id" : { $dateFromString: { "dateString": "attributes.created", "format": "%Y-%m-%d %H:%M:%S" }}, "num_publications": {"$sum": 1}}}
])
我們也試過用 $toDate 代替 $dateFromString,但結果是一樣的。 無論我們嘗試什么,我們似乎都會遇到相同的兩個錯誤之一:
我們已經嘗試使用不同的格式參數值 $toDate 和 $dateFromString 的各種用法,但我們得到了相同的錯誤。 我們還嘗試了各種格式規范,但似乎無法正確處理。
我們缺少什么?
使用$dateFromString
運算符,
$dateFromString
將該字符串日期轉換為日期類型$year
從上述轉換日期獲取年份publicationsByYear = collection.aggregate([
{
$group: {
_id: {
$year: { $dateFromString: "$attributes.created" }
},
num_publications: { $sum: 1 }
}
}
])
使用$toDate
運算符,
$toDate
將該字符串日期轉換為日期類型$year
從上述轉換日期獲取年份publicationsByYear = collection.aggregate([
{
$group: {
_id: {
$year: { $toDate: "$attributes.created" }
},
num_publications: { $sum: 1 }
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.