在go.mongodb中有两种族来使用bson数据,分别是
D
和
RAW
。
D族是使用原生Go形式来构造一个BSON对象。这个对于使用命令来操作mongoDB是十分有用的。
D()由下面4种类型:
D:一个BSON文档,这个是有序的。
M:一个无序的map。它除了无序之外和D是一样的(可以理解为map和bson是可以转换)。
A:一个BSON形式的数组。
E:一个D里面的单独元素。(就是文档里的一个元素)
RAW族是被用来判断是否为bytes的一个slice。
你也可以用look up()方法从RAW取得一个元素。这可以在你将BSON转化为另一个形式的数 据时是十分有用的(原文大概意思是可以节省你转化数据时的开销)。
for i := 0; i <= 10; i++ {
fan := PersonInfo{"FanOne", 17.99, "Big Data"}
fan.Name = fan.Name + strconv.Itoa(i)
fans = append(fans, bson.M{"name": fan.Name, "age": fan.Age, "major": fan.Major})
insertResult, err := Collection.InsertMany(context.TODO(), fans)
if err != nil {
fmt.Println(err)
fmt.Println(insertResult.InsertedIDs)
一些聚类函数的总结
| 表达式 | 描述 | 实例 |
|---|
| $sum | 计算总和 | bson.D{{"group", bson.D{{"_id", "major"},{"sum", bson.D{{"$sum", 1},}},}},} |
| $avg | 计算平均值 | bson.D{{"group",bson.D{{"_id","major"},{"ageAvg",bson.D{{"avg","age"},}},}},} |
| $min | 获取集合中所有文档对应值得最小值。 | bson.D{{"group",bson.D{{"_id","major"},{"minAvg",bson.D{{"min","age"}}}}}} |
| $max | 获取集合中所有文档对应值得最大值。 | bson.D{{"group",bson.D{{"_id","major"},{"maxAvg",bson.D{{"max","age"}}}}}} |
| $push | 在结果文档中插入值到一个数组中。 | bson.D{{"group", bson.D{{"_id", "name"}, {"num", bson.D{{"$push", "test"}}}}}} |
| $addToSet | 在结果文档中插入值到一个数组中,但不创建副本。 | bson.D{{"group", bson.D{{"_id", "name"}, {"num", bson.D{{"$addToSet", "test"}}}}}} |
| $first | 根据资源文档的排序获取第一个文档数据。 | bson.D{{"group", bson.D{{"_id", "major"}, {"first", bson.D{{"first","name"}}}}}} |
| $last | 根据资源文档的排序获取最后一个文档数据 | bson.D{{"group", bson.D{{"_id", "major"}, {"first", bson.D{{"last","name"}}}}}} |