sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB fråga $in med regex array av element

Använder $in kan vara ganska effektivt med små arrayer men inte så bra med enorma listor eftersom det hoppar runt i indexet för att hitta matchande dokument, eller går igenom hela samlingen om det inte finns ett index att använda.

Förutom att använda $in med det reguljära uttrycket kan du använda ett röravgränsat regexmönster med sökordslistan så här:

Testdokument:

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

Magin:

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

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

Resultaten

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


  1. Flerfältsfrågor på Redis med Redis Spring

  2. MongoDB C# Query Array av objekt som innehåller ett egenskapsvärde

  3. Mongo DB relationer mellan objekt

  4. MongoDB - Tillstånd nekad för socket:/tmp/mongodb-27017.sock