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.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
}
2.参考文章
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfbibi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01