code: func (q *Query) Limit(n int) *Query {
  	q.m.Lock()
  	switch {
  	case n == 1:
  		q.limit = 1
  		q.op.limit = -1
  	case n == math.MinInt32: // -MinInt32 == -MinInt32
  		q.limit = math.MaxInt32
  		q.op.limit = math.MinInt32 + 1
  	case n < 0:
  		q.limit = int32(-n)
  		q.op.limit = int32(n)
  	default:
  		q.limit = int32(n)
  		q.op.limit = int32(n)
  	}
  	q.m.Unlock()
  	return q
  }
docs: // Limit restricts the maximum number of documents retrieved to n, and also
  // changes the batch size to the same value.  Once n documents have been
  // returned by Next, the following call will return ErrNotFound.