     count = (@_cursor.$count or (options and options.$count))
     exists = @_cursor.$exists or (options and options.$exists)
 
-    @_buildFindQuery (err, find_query) =>
-      ins = {}
-      (delete find_query[key]; ins[key] = value.$in) for key, value of find_query when value?.$in
+    @buildFindQuery (err, find_query) =>
       keys = _.keys(find_query)
-      ins_size = _.size(ins)
-
       json = []
       queue = new Queue(1)
 

      # console.log "\nmodel_name: #{@model_type.model_name} find_query: #{util.inspect(find_query)}"
      callback(err, find_query)

  _fetchIncludes: (json, callback) ->
    # TODO: $select/$values = 'relation.field'
    return callback() unless @_cursor.$include


            json = json.splice(0, Math.min(json.length, @_cursor.$limit))
          callback()

        queue.defer (callback) => @fetchIncludes(json, callback)

      queue.await =>
        return callback(null, (if _.isArray(json) then !!json.length else json)) if exists
        return callback(null, if json.length then json[0] else null) if @_cursor.$one

        json = @selectResults(json, callback)
        if @_cursor.$page or (@_cursor.$page is '')
          callback(null, {
            offset: @_cursor.$offset
            total_rows: @_count(find_query, keys)
            rows: json
          })
        else
          callback(null, json)

      return # terminating

  buildFindQuery: (callback) ->
    queue = new Queue()

    find_query = {}
