sql >> Database >  >> NoSQL >> MongoDB

Zoeken in volledige tekst met gewicht in mangoest

Ja, u kunt zoeken in volledige tekst in Mongoose>=3.8.9. Ten eerste kan een collectie maximaal één tekstindex hebben (zie docs). Om de tekstindex voor verschillende velden te definiëren, hebt u dus een samengestelde index nodig:

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

Nu kunt u $text . gebruiken query-operator als volgt:

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

Hiermee worden de resultaten ook gesorteerd op relevantiescore.

Wat betreft gewichten, je kunt proberen om het object weights options door te geven aan index() methode (waar je de samengestelde index definieert) (werkt in ieder geval met v4.0.1 van mangoest):

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


  1. Voor- en nadelen van het gebruik van Celery vs. RQ

  2. Redis auth-fout met Node.js en socket.io

  3. mongoError:Topologie is vernietigd

  4. Docker kan rails niet starten