code: func (c *Collection) Find(query interface{}) *Query {
  	session := c.Database.Session
  	session.m.RLock()
  	q := &Query{session: session, query: session.queryConfig}
  	session.m.RUnlock()
  	q.op.query = query
  	q.op.collection = c.FullName
  	return q
  }
docs: // Find prepares a query using the provided document.  The document may be a
  // map or a struct value capable of being marshalled with bson.  The map
  // may be a generic one using interface{} for its key and/or values, such as
  // bson.M, or it may be a properly typed map.  Providing nil as the document
  // is equivalent to providing an empty document such as bson.M{}.
  //
  // Further details of the query may be tweaked using the resulting Query value,
  // and then executed to retrieve results using methods such as One, For,
  // Iter, or Tail.
  //
  // In case the resulting document includes a field named $err or errmsg, which
  // are standard ways for MongoDB to return query errors, the returned err will
  // be set to a *QueryError value including the Err message and the Code.  In
  // those cases, the result argument is still unmarshalled into with the
  // received document so that any other custom values may be obtained if
  // desired.
  //
  // Relevant documentation:
  //
  //     http://www.mongodb.org/display/DOCS/Querying
  //     http://www.mongodb.org/display/DOCS/Advanced+Queries
  //