我有一個MongoDB集合division_entry。按名稱分組時分成時間段
我希望按標籤過濾,然後按時間和不同的唯一值進行過濾。 最後,我想要在給定的時間跨度內獨特的所有不同的值。
目前,我必須在代碼中存儲每個時間間隔的通話時間。這導致呼叫過多。 當前 -
db.division_entry.aggregate([{$匹配:{$和:[{ 「division.label」: 「ABCD」},{ 「時間戳」:{$ GT:1495448249635,$ LT:1495448249641}} ]}},{$組:{_id: 「$獨特的」}},{$數: 「值」}])
幫助實際結果是非常讚賞。
編輯: 更多細節:
{
"_id" : "1",
"timestamp" : NumberLong("1495448249640"),
"unique" : "One",
"division" : [
{
"label" : "ABCD"
}
]
}
{
"_id" : "3",
"timestamp" : NumberLong("1495448249636"),
"unique" : "Two",
"division" : [
{
"label" : "ABCD"
}
]
}
{
"_id" : "2",
"timestamp" : NumberLong("1495448249650"),
"unique" : "Two",
"division" : [
{
"label" : "ABCD"
}
]
}
db.division_entry.aggregate([{ $match : { $and : [ { "division.label": "ABCD"}, { "timestamp" : { $gt: 1495448249635, $lt: 1495448249651 }} ] } } , {$group : { _id : "$unique"} }])
{ "_id" : "Two" }
{ "_id" : "One" }
db.division_entry.aggregate([{ $match : { $and : [ { "division.label" : "ABCD"}, { "timestamp" : { $gt: 1495448249635, $lt: 1495448249651 } } ] } } , {$group : { _id : "$unique"} } , {$count : "value" }])
{ "value" : 2 }
這是在特定的時間範圍,這在匹配查詢指定完成。假設我希望獲得一天數據的分鐘精度,我將不得不撥打1440個這樣的電話,在每次電話會議中,時間戳範圍將覆蓋一分鐘。
我希望能夠幫助挖掘並同時爲「獨特」字段找到不同的值。
這裏的實際分組是什麼?您是否應該看到不同的「時間戳」,或者它是否只是「時間戳」中的「唯一」值?從你的問題和這麼小的樣本中分辨出來有點難。有幾種技術可以解決這個問題,這對您所包含的聚合流水線示例無效無濟於事。如果您可以編輯以澄清這些問題,並且最好具有預期輸出,那麼這將有助於您的問題。 –
如果您可以指定您的「桶」非常簡單,如「常規間隔」(即1分鐘,1小時等),那麼這也會使事情變得更加清晰。包含的查詢時間戳僅相隔6毫秒,這可能並不能真正表明您正在嘗試執行的操作。 –
好多了。所以間隔總是一致的?我的意思是,例如在分組中的所有文件之間1分鐘?當然可以選擇更改該時間間隔,但需要在分組結果之間保持一致的間隔。 –