2

有以下数据:

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

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

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

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

'root' like _id||'%'

关键字可能很长。有什么好办法,最好用索引。

4

2 回答 2

0

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

于 2013-07-29T10:19:46.670 回答
0

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

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

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

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

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

另一种选择可能是使用text全文搜索索引。这将允许您匹配单词的。然后搜索root也会找到roots文本搜索http://docs.mongodb.org/manual/core/text-search/中有描述

于 2013-07-29T12:20:13.060 回答