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操作的最简单的例子.
随机推荐
- 【转】Android Studio Essential Training
http://ask.android-studio.org/?/explore/category-video Android Studio Essential Training内容包括:- Andro ...
- MyEclipse10搭建Strust2开发环境
一.创建一个JavaWeb项目 启动MyEclipse10 ,然后在MyEclipse中创建一个JavaWeb项目,点击[File]---->[New]---->[WebProjec ...
- Linux下jvm、tomcat、mysql、log4j优化配置笔记[转]
小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...
- Android 疑难杂症之获取listView Item上面组件的值
事实上思路就是又一次findById一次 获取当中组建的值.比方应用场景是 长按点击事件 获取目录名字 @Override public boolean onItemLongClick(Adapter ...
- mysql 学习笔记5-- 数据库优化
ext4:(rw,noatime,nodiratime,nobarrier,data=ordered)xfs: (rw,noatime,nodiratim,nobarrier,logbufs=8,lo ...
- Day04 - Python 迭代器、装饰器、软件开发规范
1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...
- magic_quotes_runtime(魔术引号开关)
我们可以通过以下代码来探测php环境中magic_quotes_runtime是否开启: magic_runtime.php 源代码如下: <?php //当magic_quotes_runti ...
- Android 5.0 全新的动画
触摸反馈 ripple 触摸反馈是指用户在触摸控件时的一种可视化交互,在Android L之前,通常是通过press色变来凸显,但是因为是瞬间变化的效果,不如动画生动. 在Android L 中定义了 ...
- 大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析
今天,我们来分享点不一样的资讯.....游戏APP之喜新厌旧排行榜!! 前阵子笔者开发了一套系统可以用来收集亚洲五大地区上架APP的每日排名信息,希望观察出五大地区在APP上的喜好和使用程度之间的相异 ...
- 在sql2008的实例 中 编写存储过程 读取 版本为sql2005 的实例 中的某个数据库里的数据
--创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvl ...