Search code examples
mongodbgomongo-go

Find all documents in a collection with mongo go driver


I checked out the answer here but this uses the old and unmaintained mgo. How can I find all documents in a collection using the mongo-go-driver?

I tried passing a nil filter, but this does not return any documents and instead returns nil. I also checked the documentation but did not see any mention of returning all documents. Here is what I've tried with aforementioned result.

client, err := mongo.Connect(context.TODO(), "mongodb://localhost:27017")
coll := client.Database("test").Collection("albums")
if err != nil { fmt.Println(err) }
// we can assume we're connected...right?
fmt.Println("connected to mongodb")

var results []*Album
findOptions := options.Find()
cursor, err := coll.Find(context.TODO(), nil, findOptions)
if err != nil {
   fmt.Println(err) // prints 'document is nil'
}

Also, I'm about confused about why I need to specify findOptions when I've called the Find() function on the collection (or do I not need to specify?).


Solution

  • Try passing an empty bson.D instead of nil:

    cursor, err := coll.Find(context.TODO(), bson.D{})
    

    Also, FindOptions is optional.

    Disclaimer: I've never used the official driver, but there are a few examples at https://godoc.org/go.mongodb.org/mongo-driver/mongo

    Seems like their tutorial is outdated :/