文档章节

mgo 使用

solate
 solate
发布于 2017/08/15 15:53
字数 167
阅读 134
收藏 0

批量插入

参考批量插入

使用 mgo Bulk() 方法进行插入

func BenchmarkBulkInsert(b *testing.B) {
	b.StopTimer()
	// Database
	dbs, err := mgo.Dial("mongodb://localhost/ac-bench")
	if err != nil {
		panic(err)
	}

	// Collections
	uc := dbs.Clone().DB("").C("usersBenchmarkBulk")
	defer dbs.Clone().DB("").Session.Close()

	// Clear DB
	uc.RemoveAll(bson.M{})
	b.StartTimer()

	for n := 0; n < b.N; n++ {
		count := INSERT_COUNT
		users := make([]interface{}, count) //必须定义成[]interface{}
		for i := 0; i < count; i++ {
			loop_user := User{}
			loop_user.Init()
			loop_user.Email = fmt.Sprintf("report-%d@example.com", i)
			users[i] = loop_user
		}
		bulk := uc.Bulk()
		bulk.Unordered()
		bulk.Insert(users...)
		_, bulkErr := bulk.Run()
		if bulkErr != nil {
			panic(err)
		}
	}
}

测试

go test -bench=".*" -cpu 1,2

BenchmarkFlatInsert                  100          12281273 ns/op
BenchmarkFlatInsert-2                100          12981239 ns/op
BenchmarkParallelInsert              200           6963727 ns/op
BenchmarkParallelInsert-2            200           7948616 ns/op
BenchmarkBulkInsert                 2000           1134782 ns/op
BenchmarkBulkInsert-2               2000           1072460 ns/op

后面继续补充

PS: 觉得不错的请点个赞吧!! (ง •̀_•́)ง

© 著作权归作者所有

solate
粉丝 10
博文 126
码字总数 109905
作品 0
成都
程序员
私信 提问
go 使用mongodb

mongodb官方没有关于go的mongo的驱动,因此只能使用第三方驱动,mgo就是使用最多的一种。 官网:http://labix.org/mgo 文档:http://godoc.org/gopkg.in/mgo.v2 等下继续补充。。。。。 mgo使...

solate
2016/12/13
36
0
【翻译】使用Golang+MongoDB构建微服务

原创文章,转载请注明: 转载自勤奋的小青蛙 本文链接地址: 【翻译】使用Golang+MongoDB构建微服务 翻译来源:http://goinbigdata.com/how-to-build-microservice-with-mongodb-in-golang/ ...

mickelfeng
2018/02/08
0
0
关于golang mgo用户提交注入风险

我在网上找了一下,关于mongodb确实存在注入风险。 但在golang中mgo,如果没有对用户提交数据进行有效过滤,仅使用mgo的bson.M查询,是否也会出现被注入的风险? 如果存在注入风险,是如何实...

fotomxq
2016/12/19
297
1
【golang操作mongoDB】mgo中如何使用游标?

MongoDB中是有游标这一概念的。可我在mgo中没有找到相应的方法。 按道理说mgo中应该也提供游标操作的吧?

神州浪子
2014/10/08
450
1
使用mgo驱动插入出现xxx_unrecognize列,如何去掉这列

使用protocol buffer协议生成的协议结构中会自动增加以下这列,导致了在使用mgo接口进行数据插入的时候,插入数据也会出现xxx_unrecognize列。 有什么办法可以去掉这一列么?...

ricktian1226
2014/06/24
134
0

没有更多内容

加载失败,请刷新页面

加载更多

非webpack require.js + vue + vueRouter + iView 实现按需加载

适合一个人开发的时候,在整个php框架下,又想单页,又可以直接后端assign变量穿透到模板。又不想写接口搞前后分离脚手架一大堆npm 包, 在php模板下 引入require.js <!DOCTYPE html><html...

一箭落旄头
8分钟前
2
0
新特性解读 | MySQL 8.0 窗口函数详解

原创作者: 杨涛涛 背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能。不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF...

爱可生
13分钟前
0
0
23.5 jumpserver介绍

23.5 jumpserver介绍 开源堡垒机jumpserver介绍: 官网www.jumpserver.org Jumpserver是一款使用Python, Django开发的开源跳板机系统, 助力互联网企业高效 用户、资产、权限、审计 管理 Auth...

oschina130111
20分钟前
2
0
Spring Cloud 入门教程(七): 消息总线(Spring Cloud Bus)(Greenwich.RELEASE)

参考网址:https://blog.csdn.net/forezp/article/details/81041062,由于此文中作者基于git和rabbitMq,为了适应内网我改造为基于mysql和kafka 一、准备工作 1、安装kafka 参考这个:kafka...

pipi1919
21分钟前
1
0
用人工智能改变企业与客户的连接方式

  随着以AI人工智能技术为主的新一代信息技术的快速商业化落地,我国的数字经济正高歌猛进。2017年我国数字经济对GDP的贡献率为55%,接近甚至超越了某些发达国家水平,2018年我国数字经济规...

琴殇的
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部