golang 使用mgo 连接MongoDB

golang服务与mongodb交互,以及驱动mgo源码浅析 公司大数据部门有一个需求,要将所有的交易数据进行落地,以便进行分析和价格预测等等。 具体场景: 1,写多读少 2,数据量庞大,并且每天日益增长 为什么选mongodb: 1,mongodb是弱数据结构模式,每个文档之间的结构互不影响,日后如果需要增加字段直接增加即可,对集合不会产生任何影响。 2,分布式,面对庞大的数据量,mongo原生支持sharding存储。 3,无事务和join... 阅读详情

注:现在MongoDB官方还没有推出关于官方支持的golang的driver,推荐使用的是mgo,  mgo的详细文档说明:http://godoc.org/labix.org/v2/mgo

下面是开发中自己写的一个用mgo连接MongoDB数据库的使用实例。

package main


import (

    "fmt"
    "labix.org/v2/mgo"
    "labix.org/v2/mgo/bson"
)

type Person struct {
    NAME  string
    PHONE string
}
type Men struct {
    Persons []Person
}
const = (
    URL = "192.168.2.175:27017"
)
func main() {

    session, err := mgo.Dial(URL)  //连接数据库
    if err != nil {
        panic(err)
    }
    defer session.Close()
    session.SetMode(mgo.Monotonic, true)

    db := session.DB("mydb")     //数据库名称
    collection := db.C("person") //如果该集合已经存在的话,则直接返回


    //*****集合中元素数目********
    countNum, err := collection.Count()
    if err != nil {
        panic(err)
    }
    fmt.Println("Things objects count: ", countNum)

    //*******插入元素*******
    temp := &Person{
        PHONE: "18811577546",
        NAME:  "zhangzheHero"
    }
        //一次可以插入多个对象 插入两个Person对象
    err = collection.Insert(&Person{"Ale", "+55 53 8116 9639"}, temp)
    if err != nil {
        panic(err)
    }

    //*****查询单条数据*******
    result := Person{}
    err = collection.Find(bson.M{"phone": "456"}).One(&result)
    fmt.Println("Phone:", result.NAME, result.PHONE)

    //*****查询多条数据*******
    var personAll Men  //存放结果
    iter := collection.Find(nil).Iter()
    for iter.Next(&result) {
        fmt.Printf("Result: %v\n", result.NAME)
        personAll.Persons = append(personAll.Persons, result)
    }

    //*******更新数据**********
    err = collection.Update(bson.M{"name": "ccc"}, bson.M{"$set": bson.M{"name": "ddd"}})
    err = collection.Update(bson.M{"name": "ddd"}, bson.M{"$set": bson.M{"phone": "12345678"}})
    err = collection.Update(bson.M{"name": "aaa"}, bson.M{"phone": "1245", "name": "bbb"})

    //******删除数据************
    _, err = collection.RemoveAll(bson.M{"name": "Ale”})
} 



使用 mgo 连接需要授权登录的 MongoDB 使用 mgo 连接需要授权登录的 MongoDB 使用 mgo 连接需要授权登录的 MongoDB 测试环境 MongoDB配置文件 使用mgo连接MongoDB服务器 测试环境 Golang版本:go1.10.0 代码运行环境:Windows 10 + Sublime text3 MongoDB服务器:CentOS 7.2 开始用的7.4版本,可能mongo官... 阅读详情

相关推荐

Go实战--golang使用ssl连接MongoDB(mgo)

生命不止,继续 go go go!!!之前写过关于golang如何使用mongodb的文章: Go实战–golang中使用MongoDB(mgo)文中主要介绍了Windows下如何安装mongodb,mongodb的简单命令,golang如何操作mongodb,以及使用golang+mongodb创建的微服务。今天继续深深耕一点。Windows下mongo使用配置文件创建一个配置文件,例如命名为m

一蓑烟雨任平生 也无风雨也无晴 1万+

Golang mgo 剖析之 Session

golang 操作 mongodb 使用的包是 “gopkg.in/mgo.v2”,coding 过程中需要并发读写 mongodb 数据库,简单观摩了下源码,记录下自己的一些理解,如有错误,敬请斧正。  一般来说,我们直接这样创建一个 Session: Session, err = mgo.Dial(URL)  if err != nil {   log.Printl...

独一无二的小个性 1541

Go实战--golang中使用MongoDB(mgo)

生命不止,继续 go go go !!! 昨天分享了golang如何操作redis数据库,那今天就介绍一下golang中如何使用mongodb数据库。 何为MongoDB? 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案...

一蓑烟雨任平生 也无风雨也无晴 6万+

golang操作mongodb

package main import ( mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" "fmt" ) type Persion struct { Name string `json:"name"` Phone string `json:"phone"` } type Men struct { Persons []Persion } fu...

qq_33332829的博客 210

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 481

电路保护设计实战:保险丝选型、I²t计算与多级协同方案

电路保护是电子系统可靠性的基石,其核心原理是在发生过流或过压等异常情况时,及时切断故障回路,防止能量持续灌入导致元器件损坏甚至安全事故。从技术价值看,优秀的保护设计能显著提升产品寿命、安全性和市场口碑,尤其在快充、电动汽车等高功率密度应用中,保护器件已成为不可或缺的安全屏障。在众多保护器件中,保险丝作为最基础的过流保护元件,其正确选型与应用直接关系到保护效果。本文聚焦于保险丝选型的实战细节,深入解析了I²t(电流平方时间积)这一关键参数,它定义了熔断所需的能量阈值,是匹配被保护半导体器件耐受能力、实现有效保

weixin_42662171的博客 309

Go mgo+Mongodb连接失败问题

在使用mgo连接Mongodb时,由于使用了过高版本的Mongodb(大于v5.0)数据库,导致连接失败 dialInfo := &mgo.DialInfo{ Addrs: []string{url}, //远程(或本地)服务器地址及端口号 Direct: false, Timeout: time.Second * 1, Database: "runoobdb", //数据库 Source: "admin", Username: "r

非洲绿头鸭的博客 3571

SAP 业务技术平台(BTP) Workflow(工作流)功能介绍

这背后其实发生了很多事情:Workflow 应用里 Determine Equipment Service Task 得到执行,通过 HTTP POST,消费部署在 SAP BTP 上的 Business Rules Service,后者根据我们在 Start New Instance 里传入的 Sample Data,返回自动决定出的设备明细。关于这个 SAP BTP 开发工具的更多介绍,参考我的文章:SAP 新一代全栈开发工具:SAP Business Application Studio.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 8753

mgo.v2无法连接MongoDB 5.0.x

MongoDB升级到5.0.1之后,使用gopkg.in/mgo.v2来连接MongoDB数据库时,发现验证时出现验证错误了。server returned error on SASL authentication step: BSON field 'saslContinue.mechanism' is an unknown field.。

西京刀客 2018

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 371

部署OpenClaw时设置环境变量提示export: not valid in this context的完整解决方案

OpenClaw环境变量设置错误解决方案 问题概述 在部署OpenClaw时设置环境变量出现"export: not valid in this context"错误,通常由以下原因导致: 在非交互式shell中使用export命令 在命令替换或管道中使用export 脚本文件包含Windows换行符(CRLF) 解决方案 修正脚本执行方式:确保export命令在正确的shell上下文中使用 使用source命令:通过. setup_openclaw.sh或source setup_op

博客 458

golang mongoDB 的集合创建以及增删改查操作

mgo包 import "gopkg.in/mgo.v2" 源码位置 https://github.com/go-mgo/mgo 驱动程序的使用围绕会话的概念。 要开始使用,请使用拨号功能获取会话: session, err := mgo.Dial(url) 这将与url参数定义的服务器集群建立一个或多个连接。 从那时起,可以使用多个一致性规则(请参阅SetMode)查询集群,并使用...

shnbiot的博客 4873

golang mongodb mysql_golang使用mgo连接MongoDB

github:https://github.com/ZhangzheBJUT/blog/blob/master/mgo.md 现在MongoDB官方还没有推出关于官方支持的golang的driver,推荐使用的是mgo. mgo的详细文档说明:http://godoc.org/labix.org/v2/mgo 下面是我开发中自己写的一个用mgo连接MongoDB数据库的使github:https:...

weixin_32824725的博客 264

RK3568笔记五十四:SORT实时目标追踪

YOLOv5具备目标检测的功能,把视频分解成多幅图像并逐帧执行时,如果视频帧中有多个目标,如何知道一帧中的目标和上一帧是同一个对象就是目标跟踪的工作。DeepSort是实现目标跟踪的算法,从sort(simple online and realtime tracking)演变而来,使用卡尔曼滤波器预测所检测对象的运动轨迹,匈牙利算法将它们与新的检测目标相匹配。结合YOLOv5和DeepSORT可以在实时场景中实现高效的目标检测和跟踪。

789

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

1315

mgo 连接需要授权登录的mongodb

golang mgo authentication

Magicpang 6044

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Golang之使用mgo连接MongoDB

session, err := mgo.Dial("localhost:27017") if err != nil { log.Println("err: ", err) return } defer session.Close() // Optional. Switch the session to a monotonic behavior. session.S...

RunFromHere的博客 659

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

go使用mgo连接mongodb

http://blog.youkuaiyun.com/varding/article/details/17200299

625

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Go使用mgo中的各种实用函数讲解以及实例演示

先说一句题外话,自己的亲身感受,看别人再多的博客,也不如自己去查看官方文档,自己就是看了网上的博客,感觉似懂非懂,就硬着头皮去看官方文档,看了一会,感觉也就那回事,不难。哈哈,可以先看了我的博客再去看文档,我也讲得不错哈 这里奉上 mgo 官方文档:点这里点这里 1.1 连接数据库 mgo 连接Mongodb 有三个函数。函数功能相同,参数不而已。下边做详细讲解 func Dial...

weiaiyisheng_ljj的博客 2181

golang访问mongodb

redis、mongodb是最近几年比较兴起的nosql,nosql的意思是not just sql。最近听到一位mongodb的专家说,为什么最近非关系型数据库会火起来,主要是由于现在的存储成本较低了,关系型数据库的产生主要是以前存储成本比较高,在存储的时候需要死扣字段以做到存储效率最大化。大多数应用中,加上很多复杂的关系,还不如直接全量的存储。比如图片、视频、文章等,可以直接存入数据库即可。go

课前的博客 3542

golang中使用mongodb

mgo简介 mongodb官方没有关于go的mongodb的驱动,因此只能使用第三方驱动,mgo就是使用最多的一种。 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。 官网:http://labix.org/mgo 安装与使用 安装 go get gopkg.in/mgo.v2 go中使用 package models im...

weixin_30322405的博客 118

MongoDB的Go语言驱动----mgo的使用指南

转自:https://blog.youkuaiyun.com/skh2015java/article/details/53033473 mgo简介 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。 官方网站:http://labix.org/mgo。 golang.tc(golangtc.com)网站的数据存储就是是用的M...

优秀技术文章收录 3791

golang的mgo库带账号密码连接mongodb

golang的mgo库带账号密码连接mongodb 1.找了一圈,发现很少mgo带账号密码登录连接mongodb的文章,逐记录一下。 2.解决golang连接Mongodb是的server returned error on SASL authentication step: Authentication failed 错误 上代码 // mongodbAuth project main.go p...

zhaobisheng1的博客 2719

golang学习之mgo操作mongodb

mgo是mongodb的golang驱动,测试代码: // mgotest project main.go package main import ( "fmt" "time" "gopkg.in/mgo.v2" "gopkg.in/...

chunyouhai5703的博客 314

Golang使用mgo.v2包操作MongoDB的基础示例

golang对MongoDB的操作使用gopkg.in/mgo.v2库操作。如下是基本的一些用法 连接 package main import ( "log" "time" "gopkg.in/mgo.v2" ) const ( Mong golang对MongoDB的操作使用gopkg.in/mgo.v2库操作。如下是基本的一些用法 连接 package main import ( "log" "time" "gopkg.in/mgo.v2" ) const (.

哼哈的专栏 4759
上一篇: Python高级编程技巧
下一篇: golang RPC使用
张哲BJUT
博客等级 码龄15年 151粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值