MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Намиране на MongoDB документ чрез дума в описание на поле във всеки продукт с Mongoskin

За да намерите чрез дума, всички продукти, които съществуват в колекцията, включват в полето за описание тази дума, имате нужда от съвпадение на регулярен израз с нечувствителност към главни и малки букви. Можете да използвате следната заявка (като пример):

db.product.find({"data.description": /test/i});

където i в /test/i показва нечувствителност към главни и малки букви, поради което регулярният израз съвпада в полето за описание за всеки текст с низа "test" . Следва еквивалентният SQL израз:

select * from product where description like '%test%'

Така че бихте могли да използвате същото във вашето внедряване на маршрут, като използвате find() метод за връщане на всички съответстващи документи вместо findOne() който връща само един документ:

app.get("/description/:id", auth, function(req, res, next) {
    req.collection.find({
        "data.description": /req.params.id/i
    }, function(e, result) {
        if(e) return next(e);
        res.send(result);
    });
});

Друг вариант е да използвате $text във вашата операция за намиране, тъй като извършва текстово търсене на съдържанието на полетата, индексирани с текстов индекс. Така че първото нещо, което бихте направили, е да създадете текстов индекс в полето за описание:

db.collection.createIndex( { "data.description": "text" } )

След това можете да правите заявки, като използвате оператора $text. Например следната заявка търси термина кафе:

db.collection.find( { $text: { $search: "coffee" } } )

РЕДАКТИРАНЕ :

При равни условия можете да актуализирате внедряването на маршрута си, за да използвате вместо това низове на заявки в URL адреса:

app.get("/description", auth, function(req, res, next) {
    req.collection.find({
        $text: { $search: req.params.q }
    }, function(e, result) {
        if(e) return next(e);
        res.send(result);
    });
});

което можете да направите заявка в браузъра си като http://localhost/description?q=product




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не може да се извлекат данни от API с помощта на Express NodeJS и MongoDB, зареждане

  2. Неуловено изключение „MongoConnectionException“

  3. Твърде много отворени файлове, като същевременно осигурите индекс mongo

  4. Може ли MongoDB да използва индекс, когато проверява за съществуване на поле с оператор $exists?

  5. Индекс на поддокумента в mongo