0
点赞
收藏
分享

微信扫一扫

Go使用MongoDB——Qmgo框架

janedaring 2022-10-09 阅读 68


Go使用MongoDB——Qmgo框架

​Qmgo​​​ 是一款​​Go​​​语言的​​MongoDB​​​ ​​driver​​​,它基于​​MongoDB 官方 driver​​​ 开发实现,同时使用更易用的接口设计,比如参考​​mgo​​​ (比如​​mgo​​的链式调用)。

  • ​Qmgo​​​让您以更优雅的姿势使用​​MongoDB​​的新特性。
  • ​Qmgo​​​是从​​mgo​​​迁移到新​​MongoDB driver​​的第一选择,对代码的改动影响最小。

1.综合使用

package main

import (
"context"
"fmt"
"github.com/qiniu/qmgo"
"go.mongodb.org/mongo-driver/bson"
)

func main() {
ctx := context.Background()
cli, err := qmgo.Open(ctx, &qmgo.Config{Uri: "mongodb://localhost:27017", Database: "test", Coll: "user"})
defer func() {
if err = cli.Close(ctx); err != nil {
panic(err)
}
}()
type UserInfo struct {
Name string `bson:"name"`
Age uint16 `bson:"age"`
Weight uint32 `bson:"weight"`
}

var userInfo = UserInfo{
Name: "xm",
Age: 7,
Weight: 40,
}
//cli.CreateOneIndex(context.Background(), options.IndexModel{Key: []string{"name"}})
//cli.CreateIndexes(context.Background(), []options.IndexModel{{Key: []string{"id2", "id3"}}})

// insert one document
result, err := cli.InsertOne(ctx, userInfo)
fmt.Println("插入一条数据")
fmt.Println(result) // &{ObjectID("633aafb8059f29c39a396235")}

// find one document
one := UserInfo{}
err = cli.Find(ctx, bson.M{"name": userInfo.Name}).One(&one)
fmt.Println("根据name查询")
fmt.Println(one) //{xm 7 40}
// multiple insert
var userInfos = []UserInfo{
UserInfo{Name: "a1", Age: 6, Weight: 20},
UserInfo{Name: "b2", Age: 6, Weight: 25},
UserInfo{Name: "c3", Age: 6, Weight: 30},
UserInfo{Name: "d4", Age: 6, Weight: 35},
UserInfo{Name: "a1", Age: 7, Weight: 40},
UserInfo{Name: "a1", Age: 8, Weight: 45},
}
result1, err := cli.Collection.InsertMany(ctx, userInfos)
fmt.Println("插入多条数据")
fmt.Println(result1)
/*
&{[ObjectID("633aafb8059f29c39a396236") ObjectID("633aafb8059f29c39a396237")
ObjectID("633aafb8059f29c39a396238") ObjectID("633aafb8059f29c39a396239")
ObjectID("633aafb8059f29c39a39623a") ObjectID("633aafb8059f29c39a39623b")]}
*/

// 删除数据
err = cli.Remove(ctx, bson.M{"age": 7})

// find all 、sort and limit
batch := []UserInfo{}
cli.Find(ctx, bson.M{"age": 6}).Sort("weight").Limit(7).All(&batch)
fmt.Println("sort+limit查询")
fmt.Println(batch) //[{a1 6 20} {b2 6 25} {c3 6 30} {d4 6 35}]
count, err := cli.Find(ctx, bson.M{"age": 6}).Count()

fmt.Printf("age=6 的个数为: %d\n", count) //age=6 的个数为: 4

}

Go使用MongoDB——Qmgo框架_数据

2.参考文章

​​官方文档​​

​​文章1​​


举报

相关推荐

0 条评论