Have ideas to improve npm?Join in the discussion! »

    mongoose-partial-full-search

    0.0.6 • Public • Published

    #mongoose-partial-full-search

    This is a fork of mongoose-text-search, better documentation to come.

    Provides MongoDB Partial(using $regex) and Full(using $text) text search support for mongoose.

    Build Status

    Example:

    // modules
    var mongoose = require('mongoose');
    var textSearch = require('mongoose-partial-full-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.search('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-partial-full-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.search('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.

    Install

    npm i mongoose-partial-full-search

    DownloadsWeekly Downloads

    274

    Version

    0.0.6

    License

    MIT

    Unpacked Size

    10.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar