How to build $ or request in mgo

I am trying to convert this JS MongoDB request to a Go mgo request:

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

This is what I have so far, but it does not work:

 conditions := bson.M{"$or": []bson.M{bson.M{"uuid": name}, bson.M{"name": name}}} 

EDIT: It seems to be working now. Maybe I had a typo somewhere.

+6
source share
1 answer

Here is a complete example that works great for me (with Go 1.4 and 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) } 
+14
source

Source: https://habr.com/ru/post/979189/


All Articles