gxh1968 发表于 2018-9-20 08:40:58

golang-mongodb范例

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   Latitudefloat64
  
16 }
  
17
  
18 type Person struct {

  
19    >  
20   Name   string
  
21   Age_Intint
  
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      >  
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 }


页: [1]
查看完整版本: golang-mongodb范例