MongoDB 2.4 text search support for mongoose
JavaScript
Switch branches/tags
Nothing to show
Latest commit 6c884ae Nov 7, 2013 Aaron Heckmann bump mongoose dev dependancy
Permalink
Failed to load latest commit information.
lib added; `lean` option Mar 27, 2013
test added; `lean` option Mar 27, 2013
.gitignore initial commit Mar 25, 2013
.travis.yml initial commit Mar 25, 2013
History.md release 0.0.2 Mar 27, 2013
Makefile test; default run excludes integration Mar 25, 2013
README.md Update README.md Apr 15, 2013
index.js initial commit Mar 25, 2013
package.json bump mongoose dev dependancy Nov 7, 2013

README.md

#mongoose-text-search

Provides MongoDB 2.4 text search support for mongoose.

Build Status

Example:

// modules
var mongoose = require('mongoose');
var textSearch = require('mongoose-text-search');

// create our schema
var gameSchema = mongoose.Schema({
    name: String
  , tags: [String]
  , likes: Number
  , created: Date
});

// give our schema text search capabilities
gameSchema.plugin(textSearch);

// add a text index to the tags array
gameSchema.index({ tags: 'text' });

// test it out
var Game = mongoose.model('Game', gameSchema);

Game.create({ name: 'Super Mario 64', tags: ['nintendo', 'mario', '3d'] }, function (err) {
  if (err) return handleError(err);

  Game.textSearch('3d', function (err, output) {
    if (err) return handleError(err);

    var inspect = require('util').inspect;
    console.log(inspect(output, { depth: null }));

    // { queryDebugString: '3d||||||',
    //   language: 'english',
    //   results:
    //    [ { score: 1,
    //        obj:
    //         { name: 'Super Mario 64',
    //           _id: 5150993001900a0000000001,
    //           __v: 0,
    //           tags: [ 'nintendo', 'mario', '3d' ] } } ],
    //   stats:
    //    { nscanned: 1,
    //      nscannedObjects: 0,
    //      n: 1,
    //      nfound: 1,
    //      timeMicros: 77 },
    //   ok: 1 }
  });
});

Output:

The output is not limited to the found documents themselves but also the complete details of the executed command.

The results property of the output is an array of objects containing the found document and its corresponding search ranking. score is the ranking, obj is the mongoose document.

For more information about these properties, read the MongoDB documentation.

Options

mongoose-text-search supports passing an options object as the second argument.

Example:

var options = {
    project: '-created'                // do not include the `created` property
  , filter: { likes: { $gt: 1000000 }} // casts queries based on schema
  , limit: 10
  , language: 'spanish'
  , lean: true
}

Game.textSearch('game -mario', options, callback);

Notes:

As of mongoose 3.6.0, text indexes may be added using the Schema.index() method.

As of MongoDB 2.4.0, text search is experimental/beta. As such, this functionality is not in mongoose core.