sql >> Database >  >> NoSQL >> MongoDB

kan regex niet gebruiken in $in operator in mongodb

U moet de elementen in de array inpakken met de RegExp object d.w.z.

regex =[new RegExp("sai", "i"), new RegExp("test", "i"),...]

U kunt de map() methode om de elementen in de array met de RegExp-wrappers toe te wijzen aan een nieuwe array die u vervolgens in de regex-query kunt gebruiken met $in :

var x = ["sai","test","jacob","justin"],
    regex = x.map(function (e) { return new RegExp(e, "i"); });

db.users.find({"profile.firstName": { "$in": regex } });

$in gebruiken kan redelijk efficiënt zijn met kleine arrays, maar niet zo goed met enorme lijsten, omdat het de index zal overslaan om de overeenkomende documenten te vinden, of door de hele collectie loopt als er geen index is om te gebruiken.

Naast de $in gebruiken met de reguliere expressie , kunt u een door sluistekens gescheiden regex-patroon gebruiken met de lijst met zoekwoorden als volgt:

var x = ["sai","test","jacob","justin"],
    regex = x.join("|");

db.users.find({
    "profile.firstName": {
        "$regex": regex, 
        "$options": "i"
    } 
}).count;


  1. Query MongoDB met $and en Multiple $or

  2. Maak een wildcard-index in MongoDB

  3. Hoe FILTER ik gegevens tussen twee datums van mongodb met behulp van een aggregatie:match, lookup en project?

  4. Wanneer documenten in Mongo DB insluiten?