MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wyszukiwanie dokumentu MongoDB poprzez słowo w opisie pola w każdym produkcie z Mongoskin

Aby znaleźć poprzez słowo, wszystkie produkty, które istnieją w kolekcji, zawierają w polu opisu to słowo, potrzebujesz dopasowania wyrażenia regularnego bez rozróżniania wielkości liter. Możesz użyć następującego zapytania (jako przykładu):

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

gdzie i w /test/i wskazuje niewrażliwość na wielkość liter, dlatego wyrażenie regularne pasuje do pola opisu dla dowolnego tekstu z ciągiem "test" . Odpowiednie wyrażenie SQL jest następujące:

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

Możesz więc użyć tego samego w implementacji trasy, używając find() metoda zwracania wszystkich dopasowanych dokumentów zamiast findOne() który zwraca tylko jeden dokument:

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);
    });
});

Inną opcją jest użycie $text operatora w operacji wyszukiwania, ponieważ wykonuje ona wyszukiwanie tekstowe w zawartości pól zindeksowanych indeksem tekstowym. Więc pierwszą rzeczą, którą powinieneś zrobić, to utworzyć indeks tekstowy w polu opisu:

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

Następnie możesz wykonać zapytanie używając operatora $text. Na przykład poniższe zapytanie wyszukuje termin kawa:

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

EDYTUJ :

Jeśli wszystkie rzeczy są równe, możesz zaktualizować implementację trasy, aby zamiast tego używała ciągów zapytań w adresie 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);
    });
});

które możesz wyszukać w przeglądarce jako http://localhost/description?q=product




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak utworzyć indeks tekstowy w mongodb z golangiem i biblioteką mgo?

  2. Kiedy używać Singleton vs Transient vs Request przy użyciu Ninject i MongoDB?

  3. Kompas MongoDB - utknął podczas łączenia się z Atlasem

  4. Mongusta:schemat kontra model?

  5. Stanowisko serwisowe węzła Mongo REST