Go使用MongoDB——Qmgo框架
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go使用MongoDB——Qmgo框架相关的知识,希望对你有一定的参考价值。
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.ConfigUri: "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.IndexModelKey: []string"name")
//cli.CreateIndexes(context.Background(), []options.IndexModelKey: []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
UserInfoName: "a1", Age: 6, Weight: 20,
UserInfoName: "b2", Age: 6, Weight: 25,
UserInfoName: "c3", Age: 6, Weight: 30,
UserInfoName: "d4", Age: 6, Weight: 35,
UserInfoName: "a1", Age: 7, Weight: 40,
UserInfoName: "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
2.参考文章
以上是关于Go使用MongoDB——Qmgo框架的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Go 中使用 .crt 文件通过 ssl 连接到 mongoDB