拥有以下数据:
>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||'%'
关键字可能很长。什么是好方法,最好使用索引。
答案 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/