0

我有这样的mongodb记录:

{ "_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" }

我想使用正则表达式($regex)查找只有“age_calculator”的记录。
我做了这样的事情:

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

我只想得到结果,age_calculator但上面的查询甚至包括age_calculator-python

如何克服这一点?有人可以帮忙吗?

4

1 回答 1

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|”开头的任何内容,包括管道。

于 2013-03-27T08:36:20.293 回答