find常用

作者: 蕴重Liu | 来源:发表于2019-07-02 14:33 被阅读0次
查询操作符
$lt    <   (less  than )
$lte   <=  (less than  or equal to )
$gt    >    (greater  than )
$gte   >=    (greater  than or   equal to)

$ne  != (not equal to)不等于  {'age': {'$ne': 20}}
$in  在范围内  {'age': {'$in': [20, 23]}}   注意用list
$nin  (not in)  不在范围内{'age': {'$nin': [20, 23]}} 注意用list
$regex (正则匹配) db.collection.find({'name': {'$regex': '^M.*'}})  匹配以M开头的名字
$exists      属性是否存在       {'name': {'$exists': True}}     查找name属性存在
$type     类型判断        {'age': {'$type': 'int'}}       age的类型为int
$text      文本查询      {'$text': {'$search': 'Mike'}}     text类型的属性中包含Mike字符串
$or  查找多种条件   ({'$or':[{'name':'chen'},{'name':'wang'}]})

--支持字符串的日期比较
{'pub_date':{'$gte':'2017-07-11  11:0:0'}}
$regex 正则匹配

--语法
{ < field >: { $ regex : / pattern / , $ options : ‘’ } }
{ < field >: { $ regex : ‘pattern’ , $ options : ‘’ } }
{ < field > : { $ regex : / pattern / < options > } }

--包含某字段的模糊查询
 {"name":{ $regex:/XXX/ }}  -- 常用
{"name":{'$regex': '\%s' % grade}} -- grade是变量
{"name":{ $regex:/XXX/ ,$options:'i'}}

--特殊:所查字段里面有括号,要转义一下,匹配:(v
{"title":/^F5\\(v/}

--多字段模糊查询
{$or:[{name:{$regex:/a/}},{age:{$regex:/5/}}]}

--以下未测试通过
--以某字段为开头
{"name":{$regex:/^XXX/}}
--以某字段为结尾
{"name":{$regex:/XXX^/}}
--查询忽略大小写
{"name":{$regex:/XXX/i}}

注意:不能在$regex里面使用运算符表达式 $in
options选项
i 
不区分大小写以匹配大小写的情况。
m 
对于包含锚点的模式(即^,对于开始, $结束),在每行的开头或结尾处匹配具有多行值的字符串。
如果没有此选项,这些锚点将在字符串的开头或结尾处匹配,如果模式不包含锚点或者字符串值没有换行符(例如\n),则该m选项无效。
x 
$regex除非转义或包含在字符类中,否则“扩展”功能可忽略模式中的所有空格字符。 
此外,它会忽略中间的字符,包括未转义的hash / pound(#)字符和下一个新行,以便您可以在复杂模式中包含注释。
这仅适用于数据字符; 空格字符可能永远不会出现在模式中的特殊字符序列中。 该x选项不影响VT字符的处理(即代码11)。
需要$regex与$options语法

s 
允许点字符(即.)匹配包括换行符在内的所有字符。有关示例,请参阅使用。点匹配新线。
需要$regex与$options语法

相关文章

网友评论

    本文标题:find常用

    本文链接:https://www.haomeiwen.com/subject/vubzcctx.html