sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB regex matchningsproblem

Problemet ligger i den partiella matchningen, eftersom du inte begränsar regexet för hela ordet, den partiella matchningen som finns i a:b:c det är a:b resulterar i att du får det dokumentet.

Använd följande regex med ^$ som är ankare för att representera början och slutet av ordet;

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

Detta kommer att få regexet att gälla för hela strängen och ignorera de partiella matchningarna som förklarats ovan. För mer om regex-ankare, klicka här .

Så, sammanfattningsvis, det finns ingen bugg, bara ett missbruk av regex.




  1. Mongoose MODELL update() vs save()

  2. Meteor - collection.find() returnerar alltid alla fält

  3. hur man infogar autoincrement-nummer med min mangustsamling

  4. MongoError:Alternativet 'markör' krävs, förutom för aggregering med förklara-argumentet