lib/operations/collection_ops.js
function geoHaystackSearch(coll, x, y, options, callback) {
  // Build command object
  let commandObject = {
    geoSearch: coll.s.name,
    near: [x, y]
  };

  // Remove read preference from hash if it exists
  commandObject = decorateCommand(commandObject, options, ['readPreference', 'session']);

  options = Object.assign({}, options);
  // Ensure we have the right read preference inheritance
  options.readPreference = resolveReadPreference(options, { db: coll.s.db, collection: coll });

  // Do we have a readConcern specified
  decorateWithReadConcern(commandObject, coll, options);

  // Execute the command
  executeCommand(coll.s.db, commandObject, options, (err, res) => {
    if (err) return handleCallback(callback, err);
    if (res.err || res.errmsg) handleCallback(callback, toError(res));
    // should we only be returning res.results here? Not sure if the user
    // should see the other return information
    handleCallback(callback, null, res);
  });
}
function geoHaystackSearch(coll, x, y, options, callback) {
  // Build command object
  let commandObject = {
    geoSearch: coll.s.name,
    near: [x, y]
  };

  // Remove read preference from hash if it exists
  commandObject = decorateCommand(commandObject, options, ['readPreference', 'session']);

  options = Object.assign({}, options);
  // Ensure we have the right read preference inheritance
  options.readPreference = resolveReadPreference(options, { db: coll.s.db, collection: coll });

  // Do we have a readConcern specified
  decorateWithReadConcern(commandObject, coll, options);

  // Execute the command
  executeCommand(coll.s.db, commandObject, options, (err, res) => {
    if (err) return handleCallback(callback, err);
    if (res.err || res.errmsg) handleCallback(callback, toError(res));
    // should we only be returning res.results here? Not sure if the user
    // should see the other return information
    handleCallback(callback, null, res);
  });
}
function geoHaystackSearch ( coll , x , y , options , callback ) { // Build command object let commandObject = { geoSearch : coll . s . name , near : [ x , y ] } ; // Remove read preference from hash if it exists commandObject = decorateCommand ( commandObject , options , [ 'readPreference' , 'session' ] ) ; options = Object . assign ( { } , options ) ; // Ensure we have the right read preference inheritance options . readPreference = resolveReadPreference ( options , { db : coll . s . db , collection : coll } ) ; // Do we have a readConcern specified decorateWithReadConcern ( commandObject , coll , options ) ; // Execute the command executeCommand ( coll . s . db , commandObject , options , ( err , res ) => { if ( err ) return handleCallback ( callback , err ) ; if ( res . err || res . errmsg ) handleCallback ( callback , toError ( res ) ) ; // should we only be returning res.results here? Not sure if the user // should see the other return information handleCallback ( callback , null , res ) ; } ) ; }
Execute a geo search using a geo haystack index on a collection.

@method
@param {Collection} a Collection instance.
@param {number} x Point to search on the x axis, ensure the indexes are ordered in the same order.
@param {number} y Point to search on the y axis, ensure the indexes are ordered in the same order.
@param {object} [options] Optional settings. See Collection.prototype.geoHaystackSearch for a list of options.
@param {Collection~resultCallback} [callback] The command result callback
Execute a geo search using a geo haystack index on a collection .