code: func (q *Query) SetMaxTime(d time.Duration) *Query {
  	q.m.Lock()
  	q.op.options.MaxTimeMS = int(d / time.Millisecond)
  	q.op.hasOptions = true
  	q.m.Unlock()
  	return q
  }
docs: // SetMaxTime constrains the query to stop after running for the specified time.
  //
  // When the time limit is reached MongoDB automatically cancels the query.
  // This can be used to efficiently prevent and identify unexpectedly slow queries.
  //
  // A few important notes about the mechanism enforcing this limit:
  //
  //  - Requests can block behind locking operations on the server, and that blocking
  //    time is not accounted for. In other words, the timer starts ticking only after
  //    the actual start of the query when it initially acquires the appropriate lock;
  //
  //  - Operations are interrupted only at interrupt points where an operation can be
  //    safely aborted – the total execution time may exceed the specified value;
  //
  //  - The limit can be applied to both CRUD operations and commands, but not all
  //    commands are interruptible;
  //
  //  - While iterating over results, computing follow up batches is included in the
  //    total time and the iteration continues until the alloted time is over, but
  //    network roundtrips are not taken into account for the limit.
  //
  //  - This limit does not override the inactive cursor timeout for idle cursors
  //    (default is 10 min).
  //
  // This mechanism was introduced in MongoDB 2.6.
  //
  // Relevant documentation:
  //
  //   http://blog.mongodb.org/post/83621787773/maxtimems-and-query-optimizer-introspection-in
  //