如何编写 go bson.M from MongoDb 查询
How to write go bson.M from MongoDb query
我正在使用 mongodb 作为数据库。我可以使用命令
从命令行查询数据库
db.nfinstances.distinct("ipv4Addresses",{"nfType":"AMF", "amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"})
这给了我我想要的 ip 地址 [x.x.x.x] 输出。
但是,如果我使用 golang 查询进行查询
var SliceIP []NfInstance
db.C(COLLECTION).Find(bson.M{
"nfType": "AMF",
"amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"}
).Distinct("ipv4Addresses", &SliceIP)
我得到一个空数组,而不是数组中的 IP 地址字符串。在数据库中,我有 json 文档作为
{
"nfinstanceID": "3fa85f64-5717-4562-b3fc-2c963f66af33",
"nfType": [
"AMF"
],
"nfStatus": [
"REGISTERED"
],
"sNssais": [
{
"sst": 1,
"sd": "sd1"
}
],
"nsiList": [
"string"
],
"ipv4Addresses": [
"198.51.100.300"
],
"allowedNssais": [
{
"sst": 1,
"sd": "sd1"
}
],
"amfInfo": {
"amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33",
"taiList": [
{
"plmnId": {
"mcc": "244",
"mnc": "38"
},
"tac": "string"
}
],
"n2InterfaceAmfInfo": {
"ipv4EndpointAddress": [
"198.51.100.105"
]
}
}
}
Mongodb 命令行查询如下所示
> db.nfinstances.distinct("ipv4Addresses",{"nfType":"AMF", "amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"})
mongodb Output:
[ "198.51.100.300" ]
我期望使用 bson.M
的相同输出
谁能帮忙找出问题所在?
Query.Distinct()
解组不同 值 的列表,而不是完整的文档(等效的 MongoDB 查询也 returns 值,而不是文档) .
因此,只需将不同的 IP 解组为 []string
类型的值(并且永远不要忘记处理错误):
var ips []string
err := db.C(COLLECTION).Find(bson.M{
"nfType": "AMF",
"amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33",
}).Distinct("ipv4Addresses", &ips)
if err != nil {
// handle error
}
我正在使用 mongodb 作为数据库。我可以使用命令
从命令行查询数据库db.nfinstances.distinct("ipv4Addresses",{"nfType":"AMF", "amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"})
这给了我我想要的 ip 地址 [x.x.x.x] 输出。
但是,如果我使用 golang 查询进行查询
var SliceIP []NfInstance
db.C(COLLECTION).Find(bson.M{
"nfType": "AMF",
"amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"}
).Distinct("ipv4Addresses", &SliceIP)
我得到一个空数组,而不是数组中的 IP 地址字符串。在数据库中,我有 json 文档作为
{
"nfinstanceID": "3fa85f64-5717-4562-b3fc-2c963f66af33",
"nfType": [
"AMF"
],
"nfStatus": [
"REGISTERED"
],
"sNssais": [
{
"sst": 1,
"sd": "sd1"
}
],
"nsiList": [
"string"
],
"ipv4Addresses": [
"198.51.100.300"
],
"allowedNssais": [
{
"sst": 1,
"sd": "sd1"
}
],
"amfInfo": {
"amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33",
"taiList": [
{
"plmnId": {
"mcc": "244",
"mnc": "38"
},
"tac": "string"
}
],
"n2InterfaceAmfInfo": {
"ipv4EndpointAddress": [
"198.51.100.105"
]
}
}
}
Mongodb 命令行查询如下所示
> db.nfinstances.distinct("ipv4Addresses",{"nfType":"AMF", "amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33"})
mongodb Output:
[ "198.51.100.300" ]
我期望使用 bson.M
的相同输出谁能帮忙找出问题所在?
Query.Distinct()
解组不同 值 的列表,而不是完整的文档(等效的 MongoDB 查询也 returns 值,而不是文档) .
因此,只需将不同的 IP 解组为 []string
类型的值(并且永远不要忘记处理错误):
var ips []string
err := db.C(COLLECTION).Find(bson.M{
"nfType": "AMF",
"amfInfo.amfSetId": "3fa85f64-5717-4562-b3fc-2c963f66af33",
}).Distinct("ipv4Addresses", &ips)
if err != nil {
// handle error
}