Go语言开发中MongoDB数据库

伴随着移动端的兴起,Nosql数据库以其分布式设计和高性能等特点得到了广泛的应该用,下面将介绍下Nosql中的mongoDB在Go语言中的应用,在开发前,有必要了解下基础知识,mongo数据库,MongoDB在Go语言开发接口文档

在开发前,导入开发需要用到的类库

import (

"fmt"

"gopkg.in/mgo.v2"

"gopkg.in/mgo.v2/bson"

"log"

)

在示例中用到的结构有:

type Student struct {

Id_ bson.ObjectId bson:"_id"

Name string bson:"name"

Phone string bson:"phone"

Email string bson:"email"

Sex string bson:"sex"

}

一、数据库连接

数据库连接主要用到了mgo中的Dial()函数,连接形式如mgo.Dial(url1,url2,url3),具体代码如下:

func ConnecToDB() mgo.Collection {

session, err := mgo.Dial("127.0.0.1:27017")

if err != nil {

panic(err)

}

//defer session.Close()

session.SetMode(mgo.Monotonic, true)

c := session.DB("medex").C("student")

return c

}

二、插入

插入主要用到了函数 func (c Collection) Insert(docs ...interface{}) error

下面是我插入的两条记录

func InsertToMogo() {

c := ConnecToDB()

stu1 := Student{

Name: "zhangsan",

Phone: "13480989765",

Email: "[email protected]",

Sex: "F",

}

stu2 := Student{

Name: "liss",

Phone: "13980989767",

Email: "[email protected]",

Sex: "M",

}

err := c.Insert(&stu1, &stu2)

if err != nil {

log.Fatal(err)

}

}

通过可视化工具可以看到我插入的数据

{

"_id" : ObjectId("5a66a96306d2a40a8b884049"),

"name" : "zhangsan",

"phone" : "13480989765",

"email" : "[email protected]",

"sex" : "F"

}

{

"_id" : ObjectId("5a66a96306d2a40a8b88404a"),

"name" : "liss",

"phone" : "13980989767",

"email" : "[email protected]",

"sex" : "M"

}

三、查询

查询单个主要用到了func (c Collection) Find(query interface{}) Query函数,查询单个和多个主要用到了One()和Many()函数,条件组合可以查看mongDB数据库使用。

func GetDataViaSex() {

c := ConnecToDB()

result := Student{}

err := c.Find(bson.M{"sex": "M"}).One(&result)

if err != nil {

log.Fatal(err)

}

fmt.Println("student", result)

students := make([]Student, 20)

err = c.Find(nil).All(&students)

if err != nil {

log.Fatal(err)

}

fmt.Println(students)

}

查询所有形如:c.Find(nil).Many(&results)

另外,方法中也有个根据id来查询的方法 func (c Collection) FindId(id interface{}) Query,

func GetDataViaId() {

id := bson.ObjectIdHex("5a66a96306d2a40a8b884049")

c := ConnecToDB()

stu := &Student{}

err := c.FindId(id).One(stu)

if err != nil {

log.Fatal(err)

}

fmt.Println(stu)

}

三、更新

更新通过函数

func (c Collection) Update(selector interface{}, update interface{}) error

func (c Collection) UpdateAll(selector interface{}, update interface{}) (info ChangeInfo, err error)

func (c *Collection) UpdateId(id interface{}, update interface{}) error

func UpdateDBViaId() {

//id := bson.ObjectIdHex("5a66a96306d2a40a8b884049")

c := ConnecToDB()

err := c.Update(bson.M{"email": "[email protected]"}, bson.M{"$set": bson.M{"name": "haha", "phone": "37848"}})

if err != nil {

log.Fatal(err)

}

}

四、删除

删除对应的方法

func (c Collection) Remove(selector interface{}) error]

func (c Collection) RemoveAll(selector interface{}) (info ChangeInfo, err error)

func (c Collection) RemoveId(id interface{}) error

func RemoveFromMgo() {

c := ConnecToDB()

_, err := c.RemoveAll(bson.M{"phone": "13480989765"})

if err != nil {

log.Fatal(err)

}

}

写在最后

介绍了一篇mysql和一篇MongoDB在在Go语言开发中的使用,主要是为了学习下关系型数据库和NoSql数据库在开发中的使用。

转载自:小歪子go

链接:https://www.jianshu.com/p/5a1712e6141f

來源:简书

原文地址:https://www.cnblogs.com/liyao0312/p/9741949.html

时间: 2024-10-11 03:15:13

Go语言开发中MongoDB数据库的相关文章

android开发中的数据库SQLite的使用

其实学习android很久了,关于数据存储,之前学习的时候也一同学习过,编程这些东西很久没用都忘得差不多了,最近做个项目要用到,所以又学习了一遍. android中关于数据的存储有好几种,这次主要是SQLite的使用. 首先说一点,我的技术很烂,原理什么的不说了,就是讲一下怎么使用,包括“增删改查”这几个操作. 使用数据库的前提是有数据库,有表,所以我们首先是要有一个数据库,然后还得建一张表(至少一张表).sql语句就是“create table XXX()”.作为一个数据库系统,SQLite也

Android开发中使用数据库时出现java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.

最近在开发一个 App 的时候用到了数据库,可是在使用数据库的时候就出现了一些问题,在我查询表中的一些信息时出现了一下问题: Caused by: java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed. at android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked(

app开发中读取数据库信息的vue页面

<template> <!-- 容器 --> <div class="container"> <!-- 标头 --> <div class="header" :style="{ height: height }"> <wxc-minibar background-color="#fff" text-color="#1a1a1a" :title

iOS开发中存储数据的方法

最近被问到一些关于iOS开发中对于数据存储的处理方式,感觉数据存储这个也是经常用到的一个功能的,有必要自己去整理和记录一下的. iOS开发中一般是有四种存储数据的方式,分别是: 1.NSUserDefaults:用来保存用户自己设置的一些属性,用户再次打开程序,或者开机后,这些信息还是存在,NSUserDefaults可以存储的类型包括NSString,NSData,NSNumber,NSDictionary,NSArray.如果要存储其他的数据类型,则需要转化为前面的一些类型,NSUSerDe

web.config中配置数据库(多数据)连接的两种方式

这是我的第一篇文章,既然是第一篇了,那就从最基础的只是说起--web.config中配置数据库连接. 网上有很多这方面的资料,但发现并没有一篇从头到位很清楚明了说完的,今天就把我的整理写在这里吧. 在网站开发中,数据库操作是经常要用到的操作,ASP.NET中一般做法是在web.config中配置数据库连接代码,然后在程序中调用数据库连接代码,这样做的好处就是当数据库连接代码需要改变的时候,我们只要修改web.config中的数据库连接代码即可,而不必在修改每一个页面中的数据库连接代码. 在ASP

8.3 操作MongoDB数据库

一项权威调查显示,在大数据时代软件开发人员必备的十项技能中MongoDB数据库名列第二,仅次于HTML5.MongoDB是一个基于分布式文件存储的文档数据库,可以说是非关系型(Not Only SQL,NoSQL)数据库中比较像关系型数据库的一个,具有免费.操作简单.面向文档存储.自动分片可扩展性强.查询功能强大等特点,对大数据处理支持较好,旨在为Web应用提供可扩展的高性能数据存储解决方案.MongoDB将数据存储为一个文档,数据结构由键值(key -> value)对组成.MongoDB文档

mongodb在WEB开发中的应用与实践

一.mongodb是什么? 一套高性能.易开发的文档型数据库.他使用键值对形式存放数据,能够存放包括字符串.数组.数据序列.图片.视频等在内的大多数数据文档.MongoDB完善的设计,搞笑的可编程性使其成为当前NoSQL产品最热门的一种. 二.NoSQL概述 1.全称Not Only SQL,指的是非关系型数据库.传统的关系型数据库是于SQL语言进行操作的,虽然在功能上足够强大,但由于一在局部上只需要简单的数据操作,传统的关系型数据库显得效率低下.随着Web2.0的到来,SNS应用的兴起,对数据

盘点移动开发中最流行的5个数据库

嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求.目前有几种嵌入式数据库,你可以在移动应用程序中使用.让我们来看看这些最流行的数据库. 数据库 数据类型存储 License 支持平台 BerkeleyDB relational,objects,key-value pairs,documents AGPL 3.0 Android,iOS Couchbase Lite documents Apache 2.0 Android,iOS LevelDB k

基于C#的MongoDB数据库开发应用(2)--MongoDB数据库的C#开发

在上篇博客<基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用>里面,我总结了MongoDB数据库的一些基础信息,并在最后面部分简单介绍了数据库C#驱动的开发 ,本文继续这个主题,重点介绍MongoDB数据库C#方面的使用和封装处理过程,利用泛型和基类对象针对数据访问层进行的封装处理. 前面介绍到,当前2.2版本的数据库C#驱动的API,支持两种不同的开发接口,一个是基于MongoDatabase的对象接口,一个是IMongoDatabase的对象接口,前者中