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

MongoDB-forespørgsel $in med regex-array af element

Brug af $in kan være ret effektivt med små arrays, men ikke så godt med store lister, da det vil springe rundt i indekset for at finde de matchende dokumenter, eller gå gennem hele samlingen, hvis der ikke er et indeks at bruge.

Udover at bruge $in med det regulære udtryk, kan du bruge et pipe-separeret regex-mønster med søgeordslisten som dette:

Testdokumenter:

db.papertest.insert([
    { category: "ad bd cd" },
    { category: "dd ed fd" },
    { category: "gd hd id" },
    { category: "jd kd ld" },
    { category: "md nd od" },
    { category: "pd qd rd" },
    { category: "sd td ud" },
    { category: "vd wd xd yd zd" },
]);

Magien:

var keywords = ["xd", "sd", "ad"],
    regex = keywords.join("|");

db.papertest.find({
    "category": {
        "$regex": regex, 
        "$options": "i"
    } 
});

Resultaterne

{ "_id" : ObjectId("56bb6f171bb4f693057c0ba4"), "category" : "ad bd cd" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0baa"), "category" : "sd td ud" }
{ "_id" : ObjectId("56bb6f171bb4f693057c0bab"), "category" : "vd wd xd yd zd" }


  1. Rails og caching, er det nemt at skifte mellem memcache og redis?

  2. Redis sæt vs hash

  3. mongodb php - hvordan man laver INNER JOIN-lignende forespørgsel

  4. Sammenligning af MongoDB-ydelse på offentlige skyer:AWS, Azure &DigitalOcean