sql >> Database teknologi >  >> NoSQL >> MongoDB

Fuldtekstsøgning med vægt i mongoose

Ja, du kan bruge fuldtekstsøgning i Mongoose>=3.8.9. For det første kan en samling højst have ét tekstindeks (se dok.). Så for at definere tekstindeks for flere felter, skal du bruge sammensat indeks:

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });

Nu kan du bruge $text forespørgselsoperator som denne:

Model
    .find(
        { $text : { $search : "text to look for" } }, 
        { score : { $meta: "textScore" } }
    )
    .sort({ score : { $meta : 'textScore' } })
    .exec(function(err, results) {
        // callback
    });

Dette vil også sortere resultater efter relevansscore.

Med hensyn til vægte, kan du prøve at overføre vægtoptionsobjektet til index() metode (hvor du definerer sammensat indeks) (fungerer i det mindste med v4.0.1 af mongoose):

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});


  1. Kan ikke oprette forbindelse til mongoDB, der kører i docker-container

  2. Hvad er Express.js?

  3. MongoDB ved hjælp af en OR-klausul i mongoengine

  4. Mongoose forbindelse