golang-mongodb范例
- package main
- import (
- "log"
- "gopkg.in/mgo.v2"
- "gopkg.in/mgo.v2/bson"
- )
- type Address struct {
- Address string
- }
- type Location struct {
- Longitude float64
- Latitude float64
- }
- type Person struct {
- Id bson.ObjectId `bson:"_id"`
- Name string
- Age_Int int
- Address []Address
- Location Location
- }
- func main() {
- log.SetFlags(log.Flags() | log.Lshortfile)
- //连接
- session, err := mgo.Dial("127.0.0.1:27017")
- if err != nil {
- log.Println(err)
- return
- }
- //设置模式
- session.SetMode(mgo.Monotonic, true)
- //获取文档集
- collection := session.DB("test").C("person")
- // 创建索引
- index := mgo.Index{
- Key: []string{"name"}, // 索引字段, 默认升序,若需降序在字段前加-
- Unique: true, // 唯一索引 同mysql唯一索引
- DropDups: true, // 索引重复替换旧文档,Unique为true时失效
- Background: true, // 后台创建索引
- }
- if err := collection.EnsureIndex(index); err != nil {
- log.Println(err)
- return
- }
- if err := collection.EnsureIndexKey("$2dsphere:location"); err != nil { // 创建一个范围索引
- log.Println(err)
- return
- }
- //添加记录
- person := Person{
- Id: bson.NewObjectId(),
- Name: "逍遥",
- Age_Int: ,
- Address: []Address{
- Address{
- Address: "仙灵岛",
- },
- },
- Location: Location{
- Longitude: ,
- Latitude: ,
- },
- }
- if err := collection.Insert(person); err != nil {
- log.Println(err)
- return
- }
- //查找记录
- newPerson := &Person{}
- if err := collection.Find(bson.M{"age_int": }).One(newPerson); err != nil {
- log.Println(err)
- return
- }
- //修改记录
- if err := collection.Update(bson.M{"age_int": }, bson.M{"$set": bson.M{"age_int": }}); err != nil {
- log.Println(err)
- return
- }
- //删除记录
- //if err := collection.Remove(bson.M{"age_int": 26}); err != nil {
- // log.Println(err)
- // return
- //}
- //位置搜索
- selector := bson.M{
- "location": bson.M{
- "$near": bson.M{
- "$geometry": bson.M{
- "type": "Point",
- "coordinates": []float64{, },
- },
- "$maxDistance": ,
- //"$minDistance": 0,
- },
- },
- }
- if err := collection.Find(selector).One(newPerson); err != nil {
- log.Println(err)
- return
- }
- //
- session.Close()
- }
golang-mongodb范例的更多相关文章
- Golang+Mongodb
Golang+Mongodb打造你的第一个站点 很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到 ...
- golang mongodb (mgo)插入或读取文档的字段值为空(nil)问题解决
问题描述 当使用mgo操作mongodb时,遇到数据插入正常,但是在数据库查看时只能看到objectid被插入了:读取的时候,可以查询到记录,但是读入对象时,却所有的值均为0或者空的情况. mongo ...
- 使用Golang+Mongodb打造你的第一个站点
很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...
- golang mongodb查找find demo
使用gopkg.in/mgo.v2库操作,插入操作主要使用mongodb中Collection对象的Find方法,函数原型: func (c *Collection) Find(query inter ...
- golang mongodb 驱动二次封装
mongodb 官方的go驱动包 go.mongodb.org/mongo-driver 使用起来比较繁琐,最近对其进行了二次封装 github地址:https://github.com/w3liu/ ...
- NoSQL学习1
MongoDB使用C++语言编写的一个基于分布式的文件存储的开源数据库.可以在承受高负载的情况下,保证服务器的性能. MongoDB将数据存储成为一个文档,数据结构有键值对组成.类似于JSON,字段值 ...
- 处理范例代码Webapi中的Mongodb的Bson中ObjectId反序列化异常
微软代码范例中的一个Bug 处理Mongodb的Bson中ObjectId反序列化异常 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/f ...
- golang学习之mgo操作mongodb
mgo是mongodb的golang驱动,测试代码: // mgotest project main.go package main import ( "fmt" "ti ...
- Golang使用MongoDB通用操作
MongoDB是Nosql中常用的一种数据库,今天笔者就简单总结一下Golang如何使用这些通用的供能的,不喜勿喷... 研究的事例结构如下: type LikeBest struct { Autho ...
- 『Golang』MongoDB在Golang中的使用(mgo包)
有关在Golang中使用mho进行MongoDB操作的最简单的例子.
随机推荐
- mysql 插入语句
mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...
- TableView的优化
一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器):CPU主要从事逻辑计算的一些工作:GPU主要从事图形处理方面的工作. 2)CPU和GPU的共同点: ...
- Android开发全套视频教程在线观看网盘下载
千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...
- kvm安装及配置
yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils virt-install 修改网卡信息 /etc/ ...
- Hadoop书籍汇总
<Hadoop实战>陆嘉恒 <Hadoop - The Definitive Guide>Tom White,中文版<Hadoop权威指南> <Hadoop技 ...
- 学习微信小程序之css14浮动的特性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python learning_curve函数
这个函数需要引用sklearn包 import sklearn from sklearn.learning_curve import learning_curve 这个函数的调用格式是: learni ...
- 解决Visual Studio 找不到报表控件、rdlc中文乱码
找回报表控件 运行安装程序中的 ..\packages\Reporting Services\RVAddon.msi 工具栏,右键选择ReportViewer,注意选择的版本 如果不能编辑报表文件(. ...
- Java-Android 之页面的跳转和结构的搭建
Android中每个页面就是一个Activity,要合理的让这些页面实现跳转,才是关键,这里讲一个最简单的 首先,有一个主页面main.xml <?xml version="1.0&q ...
- .NET设计模式(2):单件模式(Singleton Pattern)
转载:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 单件模式(Singleton Pattern) --.NET设计模式系列之二 ...