操纵 mongodb 的 bson.D 输出格式

Manipulating mongodb's bson.D output format

我正在使用 FindOne 查询一行数据(单个文档):

主要包

import (
    "context"
    "fmt"
    "github.com/fatih/color" 
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func mongoDbFindOne(key, value string) bson.D {
    var result bson.D
    _ = Collection.FindOne(context.TODO(), bson.D{{key, value}}).Decode(&result)
    color.Green("[+] Found: %+v\n", result)
    return result
}

这是结果显示方式的一小部分:

[
    {
        "Key": "_id",
        "Value": "1600540844649"
    },
    {
        "Key": "hostname",
        "Value": "DESKTOP-xxxxxx"
    },
    {
        "Key": "cmdLine",
        "Value": []
    },
    {
        "Key": "pid",
        "Value": 4816
    }
]

但这就是我想要的样子:

[
    {
        "_id": "1600540844649"
    },
    {
        "hostname": "DESKTOP-xxxxxx"
    },
    {
        "cmdLine": []
    },
    {
        "pid": 4816
    }
]

或者:

[
    {
        "_id": "1600540844649",
        "hostname": "DESKTOP-xxxxxx",
        "cmdLine": [],
        "pid": 4816,
    }
]

我该怎么办?我已经搜索过 SO 和 google 但没有运气。我应该使用 struct 还是创建任何对象?我也搜索了 saving/converting bson to json 但是有解决办法。

我自己找到了解决方案: 使用 bson.M 而不是 bson.D 解决了我的问题:

import (
    "context"
    "fmt"
    "github.com/fatih/color" 
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

func mongoDbFindOne(key, value string) bson.M {
    var result bson.M
    _ = Collection.FindOne(context.TODO(), bson.M{key:value}).Decode(&result)
    color.Green("[+] Found: %+v\n", result)
    return result
}