MongoDB杂项

Truncate Table sbank
show status like 'qcache%';  
show variables like '%query_cache%'; 
set @@global.query_cache_size=1024*1024*64;
mongodb.find 常用的条件设置语句:
1.简单查询:
db.user.find({name:'11111',age;20});
2.or选择器用法
db.user.find({$or:[{'name':'lv'},{'name':'chen'}]})
3.$gt(>)  大于
4.$gte(>=) 大于等于
5.$lt(<) 小于
6.$lte(<=)  小于等于
7.$ne(!=) 不等于
db.user.find({'name':{$ne:'lv'}});
db.user.find({'age':{$gt:20,$lt:30}})
嵌入文档的精准查询:
db.user.find({favoriters:{artist:"picasso",food:"pizza"}})
匹配一个嵌入文档中的字段:
db.user.find({'favoriters.artist':"picasso"})
1.在一个数组上匹配:
先提供一个文档以供测试:
[html] view plain copy
{  
    "name":"lv",  
    "age":20,  
    "type":1,  
    "status":"p",  
    "favorites":{"artist" : "picasso","food":"pizza"},  
    "badges":["blue","black"],  
    "finidhed":[17,3],  
    "points":[{"points":85,"bonus":20},{"points":85,"bonus":10}]  
}  
1.文档中数组匹配
db.user.find({"badges":"blue"})
2.查询数组中某个特定数据中的值
db.user.find({"badges.0":"blue"})
3.数组的范围匹配查询
db.user.find({"finished":{$elemMatch:{$gt:15,$lt:20}}}) 
//查询finished中是否有元素a满足a>15 && a<20
db.user.find({"finished":{$gt:15,$lt:20}}) 
//查询finished中是否有元素a满足a>15,元素b满足b<20
4.嵌入数组的文档查询
db.user.find({"points.0.points":{$gte:55}})
//匹配points数组中下标为0的元素中的points>=55的所有数据
db.user.find({"points.points":{$gte:55}})
//匹配points数组中任何一个元素满足points>=55的所有数据
5.嵌入数组的文档的多条件查询
db.user.find({"points":{$elemMatch:{"points":{$gte:53},"bonus":20}}}) //匹配points数组中是否有元素a.points>=53同时a.bonus=20的元素
db.user.find({"points.points":{$gte:53},"bonus":20}) 
//匹配points数组中是否有元素a.points>=53和有元素b.bonus=20的元素(a,b元素可以是同一个元素也可以非同一个元素)
模糊查询简介
MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex操作符或直接使用正则表达式对象。
MySQL    MongoDB
select * from student where name like ’%joe%’
db.student.find({name:{$regex:/joe/}})
select * from student where name regexp ’joe’
db.student.find({name:/joe/})
$regex操作符的介绍
MongoDB使用$regex操作符来设置匹配字符串的正则表达式,使用PCRE(Pert Compatible Regular Expression)作为正则表达式语言。
regex操作符
{<field>:{$regex:/pattern/,$options:’<options>’}}
{<field>:{$regex:’pattern’,$options:’<options>’}}
{<field>:{$regex:/pattern/<options>}}
正则表达式对象
{<field>: /pattern/<options>}
$regex与正则表达式对象的区别:
在$in操作符中只能使用正则表达式对象,例如:{name:{$in:[/^joe/i,/^jack/}}
在使用隐式的$and操作符中,只能使用$regex,例如:{name:{$regex:/^jo/i, $nin:['john']}}
当option选项中包含X或S选项时,只能使用$regex,例如:{name:{$regex:/m.*line/,$options:"si"}}
$regex操作符的使用
$regex操作符中的option选项可以改变正则匹配的默认行为,它包括i, m, x以及S四个选项,其含义如下
i 忽略大小写,{<field>{$regex/pattern/i}},设置i选项后,模式中的字母会进行大小写不敏感匹配。
m 多行匹配模式,{<field>{$regex/pattern/,$options:'m'},m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。
x 忽略非转义的空白字符,{<field>:{$regex:/pattern/,$options:'m'},设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时井号(#)被解释为注释的开头注,只能显式位于option选项中。
s 单行匹配模式{<field>:{$regex:/pattern/,$options:'s'},设置s选项后,会改变模式中的点号(.)元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。
使用$regex操作符时,需要注意下面几个问题:
i,m,x,s可以组合使用,例如:{name:{$regex:/j*k/,$options:"si"}}
在设置索弓}的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}


$inc
根据要添加的值递增该字段的值。
$mul
将该字段的值乘以指定的值
$rename
重命名字段
$setOnInsert  
操作时,操作给相应的字段赋值
$set
用来指定一个键的值,如果不存在则创建它
$unset
用来指定一个键的值,如果不存在不创建创建它
$min
只有当指定的值小于现有字段值时才更新该字段。
$max
只有当指定的值大于现有字段值时才更新该字段。
$currentDate
设置当前日期字段的值,或者作为一个日期或时间戳。

begin tran tran_Info
select * from test WITH(TABLOCKX);
.................................
commit tran tran_Info


alter database tablename set emergency
alter database tablename set single_user
dbcc checkdb(tablename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(tablename,REPAIR_REBUILD)
alter database tablename set multi_user

 

posted @ 2019-08-14 15:08  农村手艺人  阅读(221)  评论(0编辑  收藏  举报