2013-03-27 38 views
0

指定的字符後停止掃描我有MongoDB的記錄是這樣的:
pymongo在正則表達式

{ "_id" : "age_calculator-python|513216a576b99c26fb004e4d", "status" : "BADGE" } 
{ "_id" : "age_calculator|5127d91376b99c457e000246", "status" : "BADGE" } 
{ "_id" : "age_calculator|51381ef276b99c5b16002330", "status" : "BADGE" } 
{ "_id" : "based|514f525c76b99c2ff7000398", "status" : "BADGE" } 
{ "_id" : "binary_search-javascript|514f525c76b99c2ff7000398", "status" : "BADGE" } 

我想找到只具有「age_calculator」使用正則表達式($正則表達式)的記錄。
我做了這樣的事情:

db.collection.find({status:'BADGE', "_id" : {'$regex': '^age_calculator'}) 

我想要得到唯一age_calculator但上面的查詢結果,甚至包括age_calculator-python

如何克服這一點? 任何人都可以請幫忙嗎?

回答

1

插入一塊錢在你的正則表達式的結束,意味着「結束」:

db.collection.find({status: 'BADGE', '_id': {'$regex': '^age_calculator$'}) 

雖然,爲了公平起見,匹配正則表達式開始到結束,沒有任何時髦的匹配的東西更像是一個確切的比賽:

db.collection.find({status: 'BADGE', '_id': 'age_calculator'}) 

由於Sammaye指出的那樣,你可能也意味着類似以下內容:

db.collection.find({status: 'BADGE', '_id': {'$regex': '^age_calculator\\|'}) 

這將匹配任何東西開始與'age_calculator |',包括管道。

+0

嗯,他有一個'|'在標題的末尾,不知道這是否是有意或不是,但可能是很好的添加正則表達式不匹配整個'_id'字符串,而是匹配的結尾管道 – Sammaye 2013-03-27 08:39:01

+0

好點,增加了另一個選項:) – akaIDIOT 2013-03-27 08:42:30

相關問題