分享
  1. 首页
  2. 文章

golang-mongodb范例

--xiaoyao-- · · 4690 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 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("2ドルdsphere:location"); err != nil { // 创建一个范围索引
 50  log.Println(err)
 51 return
 52  } 
 53 //添加记录
 54 person := Person{
 55  Id: bson.NewObjectId(),
 56 Name: "逍遥",
 57 Age_Int: 24, 
 58  Address: []Address{
 59  Address{
 60 Address: "仙灵岛",
 61  }, 
 62  }, 
 63  Location: Location{
 64 Longitude: 1,
 65 Latitude: 1,
 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": 24}).One(newPerson); err != nil {
 75  log.Println(err)
 76 return
 77  }
 78 //修改记录
 79 if err := collection.Update(bson.M{"age_int": 24}, bson.M{"$set": bson.M{"age_int": 26}}); 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{1, 1},
 95  },
 96 "$maxDistance": 1,
 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 }

有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:--xiaoyao--

查看原文:golang-mongodb范例

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
4690 次点击
1 回复 | 直到 2018年09月05日 15:32:08
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏