mgo建立索引

package main

import (
    "log"

    mgo "gopkg.in/mgo.v2"
)

var conn = dao.New().GetConn()

var testDBC = conn.DB("test").C("test")

type Person struct {
    Name  string `bson:"name,omitempty"`
    Age   int    `bson:"age,omitempty"`
    Score int    `bson:"score,omitempty"`
}

type M map[string]interface{}
type S string
type I interface{}

func errFatal(err error) {
    if err != nil {
        log.Fatal(err)
    }
}

type C struct {
    A `bson:",inline"`
    B `bson:",inline"`
}

type B struct {
    Value string `form:"b" json:"b" bson:"b,omitempty" text:"b"`
}

func (v *B) Set(value string) {
    v.Value = value
}

func (v *B) Get() string {
    return v.Value
}

type A struct {
    Value string `form:"a" json:"a" bson:"a,omitempty" text:"a"`
}

func (v *A) Set(value string) {
    v.Value = value
}

func (v *A) Get() string {
    return v.Value
}

func main() {
    // 建立一次即可
    errFatal(testDBC.EnsureIndex(mgo.Index{Key: []string{"a"}, Unique: true}))
    c := new(C)
    c.A.Set("5")
    errFatal(testDBC.Insert(c))
    errFatal(testDBC.Insert(c))
}
第二次插入数据报错
2018/11/23 13:18:40 E11000 duplicate key error collection: test.test index: a_1 dup key: { : "5" }

你可能感兴趣的:(mgo建立索引)