2014-12-05 16 views
5

我想这个转换的$或查询JS MongoDB中查询到围棋的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}}} 

编辑:它现在似乎工作。也许我在某个地方有一个错字。

+1

片断的语法看起来是正确的。你能展示更多的代码吗? – 2014-12-05 20:09:24

回答

13

这里是工作正常,我(和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) 
}