2011-03-17 66 views
7

我正在研究mongodb。我想在其中使用像查询。我的收藏结构如下。像mongoDB中的查询

{ "name" : "xy" , "age" : 34 , "location" : "sss"} 

{ "name" : "xyx" , "age" : 45 , "location" : "sshs"} 

{ "name" : "x" , "age" : 33 , "location" : "shhss"} 

{ "name" : "pq" , "age" : 23 , "location" : "hhh"} 

{ "name" : "pqr" , "age" : 12 , "location" : "sss"} 

我想查找匹配“name”:“x”的记录。

所以查询将返回匹配xy,xyz,x的所有三条记录。

在mongo中可能吗?

如果有人知道PLZ回复。

感谢

回答

8

您可以使用正则表达式来做到这一点:

db.customers.find({ name : /^x/i }); 

你可能会想对名称领域的一些指标。

阅读更多的MongoDB Documetation网站。

+1

索引将不起作用与case-insensetive正则表达式 – pingw33n 2011-03-17 15:06:20

+0

@ pingw33n有一个好点。一种方法是在集合中添加另一个字段,该字段存储该名称的downcase值,对其进行索引,然后将其与输入的查询结果进行比较。 – blu 2011-03-17 20:57:53

+0

@ pingw33n谢谢你指出。 @blu这就是我在这种情况下使用的方法,它似乎运作良好,除非您确实需要区分大小写,其中有一个“Xx”值和一个“xX”,并且它们都归一化为“xx”。 – 2011-03-18 05:38:42