1. package main
  2.  
  3. import (
  4. "log"
  5.  
  6. "gopkg.in/mgo.v2"
  7. "gopkg.in/mgo.v2/bson"
  8. )
  9.  
  10. type Address struct {
  11. Address string
  12. }
  13. type Location struct {
  14. Longitude float64
  15. Latitude float64
  16. }
  17.  
  18. type Person struct {
  19. Id bson.ObjectId `bson:"_id"`
  20. Name string
  21. Age_Int int
  22. Address []Address
  23. Location Location
  24. }
  25.  
  26. func main() {
  27. log.SetFlags(log.Flags() | log.Lshortfile)
  28. //连接
  29. session, err := mgo.Dial("127.0.0.1:27017")
  30. if err != nil {
  31. log.Println(err)
  32. return
  33. }
  34. //设置模式
  35. session.SetMode(mgo.Monotonic, true)
  36. //获取文档集
  37. collection := session.DB("test").C("person")
  38. // 创建索引
  39. index := mgo.Index{
  40. Key: []string{"name"}, // 索引字段, 默认升序,若需降序在字段前加-
  41. Unique: true, // 唯一索引 同mysql唯一索引
  42. DropDups: true, // 索引重复替换旧文档,Unique为true时失效
  43. Background: true, // 后台创建索引
  44. }
  45. if err := collection.EnsureIndex(index); err != nil {
  46. log.Println(err)
  47. return
  48. }
  49. if err := collection.EnsureIndexKey("$2dsphere:location"); err != nil { // 创建一个范围索引
  50. log.Println(err)
  51. return
  52. }
  53. //添加记录
  54. person := Person{
  55. Id: bson.NewObjectId(),
  56. Name: "逍遥",
  57. Age_Int: ,
  58. Address: []Address{
  59. Address{
  60. Address: "仙灵岛",
  61. },
  62. },
  63. Location: Location{
  64. Longitude: ,
  65. Latitude: ,
  66. },
  67. }
  68. if err := collection.Insert(person); err != nil {
  69. log.Println(err)
  70. return
  71. }
  72. //查找记录
  73. newPerson := &Person{}
  74. if err := collection.Find(bson.M{"age_int": }).One(newPerson); err != nil {
  75. log.Println(err)
  76. return
  77. }
  78. //修改记录
  79. if err := collection.Update(bson.M{"age_int": }, bson.M{"$set": bson.M{"age_int": }}); err != nil {
  80. log.Println(err)
  81. return
  82. }
  83. //删除记录
  84. //if err := collection.Remove(bson.M{"age_int": 26}); err != nil {
  85. // log.Println(err)
  86. // return
  87. //}
  88. //位置搜索
  89. selector := bson.M{
  90. "location": bson.M{
  91. "$near": bson.M{
  92. "$geometry": bson.M{
  93. "type": "Point",
  94. "coordinates": []float64{, },
  95. },
  96. "$maxDistance": ,
  97. //"$minDistance": 0,
  98. },
  99. },
  100. }
  101. if err := collection.Find(selector).One(newPerson); err != nil {
  102. log.Println(err)
  103. return
  104. }
  105. //
  106. session.Close()
  107. }

golang-mongodb范例的更多相关文章

  1. Golang+Mongodb

    Golang+Mongodb打造你的第一个站点 很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到 ...

  2. golang mongodb (mgo)插入或读取文档的字段值为空(nil)问题解决

    问题描述 当使用mgo操作mongodb时,遇到数据插入正常,但是在数据库查看时只能看到objectid被插入了:读取的时候,可以查询到记录,但是读入对象时,却所有的值均为0或者空的情况. mongo ...

  3. 使用Golang+Mongodb打造你的第一个站点

    很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...

  4. golang mongodb查找find demo

    使用gopkg.in/mgo.v2库操作,插入操作主要使用mongodb中Collection对象的Find方法,函数原型: func (c *Collection) Find(query inter ...

  5. golang mongodb 驱动二次封装

    mongodb 官方的go驱动包 go.mongodb.org/mongo-driver 使用起来比较繁琐,最近对其进行了二次封装 github地址:https://github.com/w3liu/ ...

  6. NoSQL学习1

    MongoDB使用C++语言编写的一个基于分布式的文件存储的开源数据库.可以在承受高负载的情况下,保证服务器的性能. MongoDB将数据存储成为一个文档,数据结构有键值对组成.类似于JSON,字段值 ...

  7. 处理范例代码Webapi中的Mongodb的Bson中ObjectId反序列化异常

    微软代码范例中的一个Bug 处理Mongodb的Bson中ObjectId反序列化异常 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/f ...

  8. golang学习之mgo操作mongodb

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

  9. Golang使用MongoDB通用操作

    MongoDB是Nosql中常用的一种数据库,今天笔者就简单总结一下Golang如何使用这些通用的供能的,不喜勿喷... 研究的事例结构如下: type LikeBest struct { Autho ...

  10. 『Golang』MongoDB在Golang中的使用(mgo包)

    有关在Golang中使用mho进行MongoDB操作的最简单的例子.

随机推荐

  1. mysql 插入语句

    mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...

  2. TableView的优化

    一:什么是TableView的优化以及为什么要优化 1)CPU(中央处理器)和GPU(图形处理器):CPU主要从事逻辑计算的一些工作:GPU主要从事图形处理方面的工作. 2)CPU和GPU的共同点: ...

  3. Android开发全套视频教程在线观看网盘下载

    千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...

  4. kvm安装及配置

     yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils virt-install 修改网卡信息 /etc/ ...

  5. Hadoop书籍汇总

    <Hadoop实战>陆嘉恒 <Hadoop - The Definitive Guide>Tom White,中文版<Hadoop权威指南> <Hadoop技 ...

  6. 学习微信小程序之css14浮动的特性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. python learning_curve函数

    这个函数需要引用sklearn包 import sklearn from sklearn.learning_curve import learning_curve 这个函数的调用格式是: learni ...

  8. 解决Visual Studio 找不到报表控件、rdlc中文乱码

    找回报表控件 运行安装程序中的 ..\packages\Reporting Services\RVAddon.msi 工具栏,右键选择ReportViewer,注意选择的版本 如果不能编辑报表文件(. ...

  9. Java-Android 之页面的跳转和结构的搭建

    Android中每个页面就是一个Activity,要合理的让这些页面实现跳转,才是关键,这里讲一个最简单的 首先,有一个主页面main.xml <?xml version="1.0&q ...

  10. .NET设计模式(2):单件模式(Singleton Pattern)

    转载:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 单件模式(Singleton Pattern) --.NET设计模式系列之二 ...