code: func (q *TransactionQuery) StoreIDs(destKey string) {
  	if q.hasError() {
  		q.tx.setError(q.err)
  		return
  	}
  	idsKey, tmpKeys, err := generateIDsSet(q.query, q.tx)
  	if err != nil {
  		q.tx.setError(err)
  	}
  	limit := int(q.limit)
  	if limit == 0 {
  		// In our query syntax, a limit of 0 means unlimited
  		// But in Redis, -1 means unlimited
  		limit = -1
  	}
  	sortArgs := q.collection.spec.sortArgs(idsKey, nil, limit, q.offset, q.order.kind == descendingOrder)
  	// Append the STORE argument to cause Redis to store the results in destKey.
  	sortAndStoreArgs := append(sortArgs, "STORE", destKey)
  	q.tx.Command("SORT", sortAndStoreArgs, nil)
  	if len(tmpKeys) > 0 {
  		q.tx.Command("DEL", (redis.Args{}).Add(tmpKeys...), nil)
  	}
  }
docs: // StoreIDs will store the ids for for models matching the criteria in a list
  // identified by destKey. It works very similarly to Query.StoreIDs, so you can
  // check the documentation for Query.StoreIDs for more information. The first
  // error encountered will be saved to the corresponding Transaction (if there is
  // not already an error for the Transaction) and returned when you call
  // Transaction.Exec.