sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB dotaz $in s regulárním polem prvku

Pomocí $in může být poměrně efektivní s malými poli, ale ne tak dobře s velkými seznamy, protože bude přeskakovat v indexu, aby našel odpovídající dokumenty, nebo projde celou kolekci, pokud neexistuje index, který by se dal použít.

Kromě použití $in s regulárním výrazem můžete použít vzor regulárního výrazu odděleného svislou čarou se seznamem klíčových slov takto:

Testovací dokumenty:

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" },
]);

Kouzlo:

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

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

Výsledky

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


  1. Hledání klíčů bez expirace v Redis

  2. Omezujete výsledky v MongoDB, ale stále získáváte plný počet?

  3. rozdíl mezi agregátem ($match) a nálezem v MongoDB?

  4. Poslouchejte změny v seznamu redis