Skip to content

Instantly share code, notes, and snippets.

@oshalygin
Forked from sindbach/mongodb_lookup.go
Created May 28, 2018 02:34
Show Gist options
  • Save oshalygin/b1e6970485183e36587f6a6d0e200f13 to your computer and use it in GitHub Desktop.
Save oshalygin/b1e6970485183e36587f6a6d0e200f13 to your computer and use it in GitHub Desktop.
A simple example of how to use $lookup in Golang using mgo.
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
collection := session.DB("database").C("collection")
pipeline := []bson.M{
bson.M{"$match": bson.M{"_id": bson.ObjectIdHex("56b9df0c1e930a99cb2c33e9")}},
bson.M{"$lookup": bson.M{ "from": "localCollection", "localField": "localField", "foreignField": "foreignField", "as": "resultField"}},
}
pipe := collection.Pipe(pipeline)
resp := []bson.M{}
err = pipe.All(&resp)
if err != nil {
fmt.Println("Errored: %#v \n", err)
}
fmt.Println(resp)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment