• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Go使用MongoDB——Qmgo框架

武飞扬头像
酷酷的Herio
帮助1

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.参考文章

官方文档

文章1

原生框架1

原生框架2

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfbibi
系列文章
更多 icon
同类精品
更多 icon
继续加载