arrays - 从golang中的mongodb检索非结构化数组

标签 arrays string mongodb go mgo

我在 MongoDB 中有以下文档

{
     "_id" : ObjectId("57e4f8f454b9a4bb13a031d8"),
     "ip" : "192.168.0.1",
     "browser" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)",
     "datetime" : ISODate("2016-09-23T09:42:12.821Z"),
     "userhash" : "BF12742F1B3A486F75E80843230168CE",
     "groups" : [ 
         "group1", 
         "group2"
     ]
}

我正在尝试将这些组放入一个逗号分隔的字符串中,例如 group1,group2,但尽我所能,我总是遇到一堵砖墙。

我得到的最接近的如下

type Record struct {
    ID           bson.ObjectId `bson:"_id"`
    IP           string        `bson:"ip"`
    Browser      string        `bson:"browser"`
    DateTime     string        `bson:"datetime"`
    Groups       bson.M        `bson:"groups,inline"`
} 

result = []Record{}

_ = c.Find(bson.M{}).All(&result)

似乎将组放入 map 但我无法将组放入字符串中。我对 Go 还很陌生,所以我仍在学习不同的数据类型以及使用什么语法来访问它们。

谢谢

最佳答案

groups 在 MongoDB 中是一个数组,所以在 Go 中使用 slice 类型:

type Record struct {
    ID           bson.ObjectId `bson:"_id"`
    IP           string        `bson:"ip"`
    Browser      string        `bson:"browser"`
    DateTime     string        `bson:"datetime"`
    Groups       []string      `bson:"groups"`
}

一旦你得到这样的记录:

err := c.Find(nil).All(&result)
// Do check error

您可以使用 strings.Join() 将它们与逗号 , 连接起来。 .示例:

s := []string{"group1", "group2"}
all := strings.Join(s, ",")
fmt.Println(all)

上面的代码打印出来(在 Go Playground 上试试):

group1,group2

例如打印组:

for _, r := range result {
    fmt.Println(strings.Join(r.Groups, ","))
}

关于arrays - 从golang中的mongodb检索非结构化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47496603/

相关文章:

c - 在 C 中,如何确保初始化字符串的长度小于指定的长度

linux - 在 BASH 中通过 Char 循环替换 Char

javascript - 使用 Javascript 从客户端使用 MongoDB

django - 如何使用 MongoDB 在 Django REST 框架模型中获取字符串列表

java - 为什么我无法创建自定义 String 类的实例,而我能够创建自定义 System 类的实例

node.js - Mongoose,在模式(枚举)中定义 OR 引用?

arrays - 如何折叠一组特定维度的数组?

c - 确定数组中的最大值

iOS - 重新排序 CoreData 中的项目

arrays - 搜索值数组以在字典中查找键