find常用
2019-07-02 本文已影响0人
蕴重Liu
查询操作符
$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语法