如何在数据库中搜索作为mongodb中搜索字符串子串的键

时间:2013-07-29 10:16:26

标签: mongodb

拥有以下数据:

>db.abc.insert([{_id:"r"},{_id:"ro"},{_id:"roo"},{_id:"root"},{_id:"rob"}]);  

已经知道关键字“root”,需要找到“_id”内容“r,ro,roo,root”记录,我试过了:

>db.abc.find({_id:{$lte:"root"}});  
{ "_id" : "r" }  
{ "_id" : "ro" }  
{ "_id" : "rob" }  
{ "_id" : "roo" }  
{ "_id" : "root" }

我不需要“抢”,等效的pl / sql语句:

'root' like _id||'%'

关键字可能很长。什么是好方法,最好使用索引。

2 个答案:

答案 0 :(得分:0)

如果搜索字符串有用,可以在搜索字符串中使用正则表达式:http://docs.mongodb.org/manual/reference/operator/regex/

答案 1 :(得分:0)

如果您输入root,那么您需要使用$in创建一个包含所有可能性的搜索查询:

db.collection.find( { _id: { $in: [ 'r', 'ro', 'roo', 'root' ] } } );

目前没有可用的功能仅搜索静态值的部分

另一种方法是 - 如果你有“ro”,那么你可以通过使用正则表达式轻松找到以“ro”开头的所有_id值:

db.collection.find( { _id: /^ro/ } );

另一种替代方法可能是使用text全文搜索索引。这将允许您匹配单词的 root 。然后,搜索root也会找到roots文字搜索http://docs.mongodb.org/manual/core/text-search/

中有描述