func (p *Pipe) Explain(result interface{}) error {
	c := p.collection
	cmd := pipeCmd{
		Aggregate: c.Name,
		Pipeline:  p.pipeline,
		AllowDisk: p.allowDisk,
		Explain:   true,
	}
	return c.Database.Run(cmd, result)
}
func (p *Pipe) Explain(result interface{}) error {
	c := p.collection
	cmd := pipeCmd{
		Aggregate: c.Name,
		Pipeline:  p.pipeline,
		AllowDisk: p.allowDisk,
		Explain:   true,
	}
	return c.Database.Run(cmd, result)
}
func ( p * Pipe ) Explain ( result interface { } ) error { c := p . collection cmd := pipeCmd { Aggregate : c . Name , Pipeline : p . pipeline , AllowDisk : p . allowDisk , Explain : true , } return c . Database . Run ( cmd , result ) }
// Explain returns a number of details about how the MongoDB server would
// execute the requested pipeline, such as the number of objects examined,
// the number of times the read lock was yielded to allow writes to go in,
// and so on.
//
// For example:
//
//     var m bson.M
//     err := collection.Pipe(pipeline).Explain(&m)
//     if err == nil {
//         fmt.Printf("Explain: %#v\n", m)
//     }
//
Explain returns a number of details about how the MongoDB server would execute the requested pipeline such as the number of objects examined the number of times the read lock was yielded to allow writes to go in and so on . For example : var m bson . M err : = collection . Pipe ( pipeline ) . Explain ( &m ) if err == nil { fmt . Printf ( Explain : %#v \ n m ) }