當前資料:
[
{
"_id": "6239bd7a465f8d1fbfc80f95",
"tag_id": "620e23a6450b9ea1a1e31d75",
"time_stamp": "2022-02-28T19:55:55.666000",
"is_deleted": false,
"value": 20
},
{
"_id": "623ef6e4cd717dc11aee942b",
"tag_id": "620e23a6450b9ea1a1e31d75",
"time_stamp": "2022-03-01T20:55:55.666000",
"is_deleted": false,
"value": 20
},
{
"_id": "623ef6f0cd717dc11aee94f6",
"company_id_rdb": 3,
"tag_id": "620e23a6450b9ea1a1e31d75",
"time_stamp": "2022-03-02T21:55:55.666000",
"is_deleted": false,
"value": 20
},
{
"_id": "623ef718cd717dc11aee97d9",
"company_id_rdb": 3,
"tag_id": "620e23a6450b9ea1a1e31da6",
"time_stamp": "2022-03-02T19:55:55.666000",
"is_deleted": false,
"value": 20
},
{
"_id": "623ef722cd717dc11aee9895",
"tag_id": "620e23a6450b9ea1a1e31da6",
"time_stamp": "2022-03-03T20:55:55.666000",
"is_deleted": false,
"value": 20
},
{
"_id": "623ef72ccd717dc11aee9943",,
"tag_id": "620e23a6450b9ea1a1e31da6",
"time_stamp": "2022-03-04T21:55:55.666000",
"is_deleted": false,
"value": 20
}
]
最終的物件應該是這樣的:
{
"time_stamp": "2022-03-04T21:55:55.666000",
"value": 60,
"tags_count":2
},
{
"time_stamp": "2022-02-28T19:55:55.666000",
"tags_count":2,
"value": 60
},
{
"time_stamp": "2022-03-03T20:55:55.666000",
"tags_count":2,
"value": 60
},
我嘗試了以下查詢,但沒有運氣:
db.getCollection('data').aggregate([
{$match:{"tag_id":{$in:[ObjectId("620e23a6450b9ea1a1e31da6"),ObjectId("620e23a6450b9ea1a1e31d75")]}}},
{$group:{"_id":"$time_stamp","value":{$sum:"$value"},"count":{$sum:1}}}
])
我有一個集合,其中包含不同標簽(tag_id)的記錄,每個記錄相差 10 分鐘,每個標簽都有一個值。我想撰寫一個查詢,在其中傳遞一個標簽串列,比如說 t1 和 t2 以及一個時間范圍(從 $ 直到),并且查詢應該回傳在該范圍內的每個時間戳傳遞的標簽值的總和.
uj5u.com熱心網友回復:
看起來你快到了,可能是這樣的:
db.collection.aggregate([
{
$match: {
"tag_id": {
"$in": [
"620e23a6450b9ea1a1e31da6",
"620e23a6450b9ea1a1e31d75"
]
},
"time_stamp": {
"$gte": "2022-02-28T19:55:55.666000",
"$lte": "2022-03-03T20:55:55.666000"
}
}
},
{
$group: {
"_id": "$time_stamp",
"value": {
$sum: "$value"
},
"count": {
$sum: 1
}
}
}
])
解釋:
- 按 tag_id 和 time_stamp 范圍匹配
- 按 time_stamp 和 sum values count 分組
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450657.html
