我们如何将原始M转换为字符串?

package main

import (
    "go.mongodb.org/mongo-driver/bson"
)

func main() {
    a := bson.M{ // primitive.M
        "test": bson.M{
            "fielda": "AAA",
            "fieldb": "BBB",
        },
    }
}
我正在使用它来记录失败的mongodb文档。
我能够使用logrus.Error打印该值,我想将此转换复制到字符串,然后将其记录到文件中。
// cursor = "go.mongodb.org/mongo-driver/mongo" *mongo.Cursor
// logrus = "github.com/sirupsen/logrus"
//...
        var temp bson.M
        _ := cursor.Decode(&temp)     // assume this is not returning error, it will log the map
        logrus.Error("value: ", temp) // value: map[__v:0 _id:ObjectID(\"5c8ef7df7216e9935ecd7859\") field1:test]

最佳答案

最简单的解决方案是像这样使用 fmt.Sprint() :

a := bson.M{
    "_id": primitive.NewObjectID(),
    "test": bson.M{
        "fielda": "AAA",
        "fieldb": "BBB",
    },
}

s := fmt.Sprint(a)
fmt.Println(s)
这将输出(在Go Playground上尝试):
map[_id:ObjectID("4af9f07018f18fbf63f00366") test:map[fielda:AAA fieldb:BBB]]

关于string - 如何转换Primitive.M映射到[string] string然后映射到string?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63629602/

10-11 21:23