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

At finde et MongoDB-dokument gennem et ord i en feltbeskrivelse i hvert produkt med Mongoskin

For at finde gennem et ord, inkluderer alle de produkter, der findes i samlingen, det ord i beskrivelsesfeltet, du skal bruge et regex-match med ufølsomhed for store og små bogstaver. Du kan bruge følgende forespørgsel (som et eksempel):

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

hvor i i /test/i angiver ufølsomhed for store og små bogstaver, så det regex matcher i beskrivelsesfeltet for enhver tekst med strengen "test" . Det tilsvarende SQL-udtryk følger:

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

Så du kan bruge det samme i din ruteimplementering ved at bruge find() metode til at returnere alle matchede dokumenter i stedet for findOne() som kun returnerer ét 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);
    });
});

En anden mulighed er at bruge $text operatoren i din søgeoperation, da den udfører en tekstsøgning på indholdet af de felter, der er indekseret med et tekstindeks. Så den første ting du ville gøre er at oprette et tekstindeks i beskrivelsesfeltet:

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

Derefter kan du forespørge ved hjælp af $text-operatoren. For eksempel søger følgende forespørgsel efter termen kaffe:

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

REDIGER :

Alt andet lige kan du derefter opdatere din ruteimplementering til i stedet at bruge forespørgselsstrenge i URL'en:

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

som du kan forespørge i din browser som http://localhost/description?q=product




  1. Hvordan kan jeg bruge MongoDB til at finde alle dokumenter, der har et felt, uanset værdien af ​​dette felt?

  2. Brug af MongoDB .findOne() funktion med indlejret dokumentværdi

  3. Gå gennem Mongo Collection og opdater et felt i hvert dokument

  4. MongoDB InsertBatch JObject - Serialiseringsfejl