如何在mgo中构造$或查询

时间:2014-12-05 19:39:20

标签: go mgo

我正在尝试将此JS MongoDB查询转换为Go mgo查询:

var foo = "bar";
db.collection.find({"$or": [ {uuid: foo}, {name: foo} ] });

这是我到目前为止所做的,但它不起作用:

conditions := bson.M{"$or": []bson.M{bson.M{"uuid": name}, bson.M{"name": name}}}
编辑:它现在似乎有效。也许我在某个地方有一个错字。

2 个答案:

答案 0 :(得分:23)

这是一个完整的例子,对我来说很好(使用Go 1.4和MongoDB 2.6.5)

package main

import (
    "fmt"
    "log"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Person struct {
    Num int
    Uuid string
    Name string
}

func main() {

    // Connect to the database
    session, err := mgo.Dial("localhost")
    if err != nil {
            panic(err)
    }
    defer session.Close()

    // Remove people collection if any
    c := session.DB("test").C("people")
    c.DropCollection()

    // Add some data        
    err = c.Insert(&Person{ 1, "UUID1", "Joe"},
                   &Person{ 2, "UUID2", "Jane"}, 
                   &Person{ 3, "UUID3", "Didier" })
    if err != nil {
            log.Fatal(err)
    }

    result := Person{}
    err = c.Find( bson.M{ "$or": []bson.M{ bson.M{"uuid":"UUID0"}, bson.M{"name": "Joe"} } } ).One(&result)
    if err != nil {
            log.Fatal(err)
    }

    fmt.Println(result)
}

答案 1 :(得分:0)

Stone
  

参考   https://gopkg.in/mgo.v2用于go lang的最佳Mongo数据库接口