sql >> Database >  >> NoSQL >> MongoDB

MongoDB regex matching problemen

Het probleem zit hem in de gedeeltelijke overeenkomst, aangezien u de regex voor het hele woord niet beperkt, de gedeeltelijke overeenkomst die bestaat in a:b:c dat is a:b resulteert in dat u dat document krijgt.

Gebruik de volgende regex met ^$ die ankers zijn om het begin en het einde van het woord weer te geven;

db.foo.find({path: /^a:[^:]+$/})
db.foo.find({path: /^a:[a-z]+$/})

Dit zorgt ervoor dat de regex van toepassing is op de hele string en de gedeeltelijke overeenkomsten negeert zoals hierboven uitgelegd. Voor meer informatie over regex-ankers, klik hier .

Dus, samenvattend, er is geen bug, alleen een misbruik van regex.




  1. Mongodb - onbekende operator op het hoogste niveau:$elemMatch

  2. Spring data mongodb-query converteert String automatisch naar ObjectId

  3. Aantal verlopen sleutels vermeld door info-opdracht op redis-slave komt niet overeen met wat ik zie

  4. Query mislukt met foutcode 13 en foutmelding 'niet geautoriseerd op [db] om opdracht uit te voeren { find: