簡體   English   中英

如何將此 SQL 翻譯成 MongoDB (GoLang)

[英]How to translate this SQL to MongoDB (GoLang)

我有這個 SQL 查詢:

SELECT SUM(TIME_TO_SEC(TIMEDIFF(IFNULL(userpresences.datefinished, NOW()), userpresences.dateadded))) FROM userpresences WHERE clientid = 12 GROUP BY userpresences.presenceid

有沒有辦法可以將其轉換為 MongoDB 查詢? 我在使用 Aggregate 和 group 參數時遇到問題。

這是 Go 代碼:

groupStage := bson.D{
        {"$group", bson.D{
            {"_id", "$presenceid"},
            {"count", bson.M{"$sum": "$datefinished"}},
        }},
    }

count應從 MySQL 返回 SUM(...)..

我設法以某種方式弄清楚了。

這是完整的代碼,以防其他人可能需要它:

currentTime := time.Now()
matchStage := bson.D{
        {"$match", bson.D{
            {"clientid", clientID},
        }},
    }

    ifNullDateFinished := bson.M{"$ifNull": []interface{}{"$datefinished", currentTime}}
    dateFinishedToSec := bson.M{"$add": []bson.M{
        {"$second": ifNullDateFinished},
        {"$multiply": []interface{}{bson.M{"$minute": ifNullDateFinished}, 60}},
        {"$multiply": []interface{}{bson.M{"$hour": ifNullDateFinished}, 3600}},
    }}

    dateAddedToSec := bson.M{"$add": []bson.M{
        {"$second": "$dateadded"},
        {"$multiply": []interface{}{bson.M{"$minute": "$dateadded"}, 60}},
        {"$multiply": []interface{}{bson.M{"$hour": "$dateadded"}, 3600}},
    }}

    groupStage := bson.D{
        {"$group", bson.D{
            {"_id", "$presenceid"},
            {"count", bson.M{"$sum": bson.M{"$subtract": []interface{}{dateFinishedToSec, dateAddedToSec}}}},
        }},
    }

暫無
暫無

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

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