https://www.cnblogs.com/daizhengyang/p/13384169.html https://blog.csdn.net/qq_27289001/article/details/77150598 https://www.cnblogs.com/wujuntian/p/6821442.html |
|
查看帮忙命令 |
hlep --server级别 db.help() --db级别 db. collectionname.help() --集合级别 |
|
查看所有数据库 |
show dbs --新建的数据库并不在数据库的列集合中,要显示它,我们需要向新建的数据库创建集合。 |
|
查看当前数据库 |
db |
|
创建数据库 |
use DATABASE_NAME |
|
切换到某个数据 |
use DATABASE_NAME |
|
删除当前数据库,会把磁盘上的数据库文件一并删除 |
db.dropDatabase() |
|
修复数据库 |
db.repairDatabase() |
|
拷贝数据库test为test999 |
db.copyDatabase( 'test', 'test999') |
|
查看所有集合(关系型数据库叫表) |
show collections show tables |
|
查看各集合的状态 |
db.printCollectionStats() |
|
新建集合 |
Use 数据库 db.createCollection( "集合名", {集合的大小属性:大小值,集合的增长属性:增长值,集合的最大容量属性:最大容量值,,,等等}) db.createCollection( "table1") |
|
删除集合table1 |
db.table1.drop() |
|
重命名集合table1为table101 |
db.table1.renameCollection("table101") |
|
查看集合table1的所在的数据库名称 |
db.table1.getDB() |
|
查看集合table1的状态 |
db.table1.stats() |
|
查询集合的所有数据 |
db.table1.find() |
|
查询集合 |
|
|
查询集合的第一条数据 |
db.table1.findOne() |
|
总行数 |
db.table1.count() |
|
集合的总大小 |
db.table1.totalSize() |
|
集合的储存空间大小 |
db.table1.storageSize() |
|
只查询列hid,并列出该列的不重复的值 |
db.table1.distinct("hid") |
|
select* from table1 where hid=2 |
db.table1.find({"hid":2}) |
|
where hid=2 and hid2=3 |
db.table1.find({"hid":2,"hid2":3}) |
|
where hid=2 or hid2=3 |
db.table1.find({$or:[{"hid":2},{"hid2":3}]}) |
|
Where hid>1 |
db.table1.find({"hid":{$gt:1}}) |
|
Where hid in(100,10) |
db.table1.find({hid:{$in:[10,100]}}) -- $nin= not in $all |
|
Where hid>=1 |
db.table1.find({"hid":{$gte:1}}) --$lt(<)、$lte(<=)、$gt(>)、$gte(>=)、$ne(<>) |
|
Where hid<2 |
db.table1.find({"hid":{$lt:2}}) |
|
Where hid<=2 |
db.table1.find({"hid":{$lte:2}}) |
|
Where 4<hid<6 |
db.table1.find({"price":{$lt:6,$gt:4}}); |
|
Where hid like '%2%' |
db.table1.find({"hid":/2/}) |
|
|
|
|
Where like is not null |
db.table1.find({like:{$nin:[null]}}) |
|
Where hid like '2%' |
db.table1.find({"hid":/^2/}) |
|
查询指定的两列hid和go2 |
db.table1.find({},{"hid":1,"go2":1}) –1:只查询那个字段. 0:不查询该字段但是不能一个是1一个是0 db.table1.find({},{"url":1,'_id':0}) -- '_id':0是可以的。因为_id是一个特殊字段 |
|
查询存在like字段的数据 |
db.table1.find({like:{$exists:1}}) --1存在 0不存在 |
|
Hid字段不存在或者为空 |
db.table1.find({hid:null}) |
|
Hid存在且为空 |
db.table1.find({hid:{$in:[null],$exists:true}}) db.table1.find({hid:{$in:[null],$exists:true}}) |
|
Hid存在且不为空 |
db.table1.find({hid:{$ne:null}) |
|
select hid,go2 from table1 where hid=23 |
db.table1.find({"hid":23},{"hid":1,"go2":1}) |
|
|
|
|
查询指定的两列hid和go2 |
db.table1.find({},{"hid":true,"go2":true}) |
|
select hid,go2 from table1 where hid=23 |
db.table1.find({"hid":23},{"hid":true,"go2":true}) |
|
查询结果按hid字段顺序排序 |
db.table1.find().sort({"hid":1}) |
|
查询结果按hid字段降序排序 |
db.table1.find().sort({"hid":-1}) |
|
查询前两条数据 |
db.table1.find().limit(2) |
|
查询第2条以后的所有数据 |
db.table1.find().skip(2) |
|
查询第2条以后的后面3条数据 |
db.table1.find().limit(3).skip(2) |
|
查询hid=2的总行数 |
db.table1.find({"hid":2}).count() --加上count():总行数 |
|
|
|
|
|
|
|
order by like desc limit 2 |
db.table1.find().sort({like:-1}).limit(2) --倒叙 --正序的时候会把空和不存在该字段的放到上面 |
|
Where like is not null order by like limit 2 |
db.table1.find({like:{$ne:null,$exists:true}}).sort({like:1}).limit(2) |
|
|
|
|
|
|
|
类型操作符$type |
|
|
返回By的类型为数字型的 |
db.table1.find({by:{$type:"double"}}) --“string” 字符型 |
|
|
|
|
|
|
|
正则表达式 查询title包含_new的 |
db.table1.find({title:/_new/}) |
|
|
db.table1.find({'title':{'$regex':'[\w]+'}}) |
|
|
|
|
|
|
|
数组元素查询 |
例如url:"http://www.runob.com", tags:[1,2,3], tags就是一个集合元素 |
|
数组tags中包含1的 |
db.table1.find({tags:1}) |
|
数组tags同时包含1,2 |
db.table1.find({tags:{$all:[2,3]}}) |
|
数组tags的第一个元素=1 |
db.table1.find({"tags.0":1}) |
|
数组tags的元素个数=3 |
db.table1.find({tags:{$size:3}}) |
|
数组tags的前两个元素 |
db.table1.find({like:10},{tags:{$slice:2}}) --正数是前面多少条,负数是尾部多少条,注意前面要有限制条件 |
|
数组tags偏移两位从第三位开始取一位 |
db.table1.find({like:10},{tags:{$slice:[2,1]}}) |
|
$来指定符合条件的任意一个数组元素 |
db.table1.find({tags:{$all:[1,3,2]}},{"tags.$":1}) |
|
数组tags只要存在大于1或者小于3的元素,就返回整个数组 |
db.table1.find({tags:{$gt:1,$lt:3}}) |
|
数组tags只要存在大于1且小于3的元素,就返回整个数组 |
db.table1.find({tags:{$elemMatch:{$gt:1,$lt:3}}}) |
|
精准匹配,顺序也要一致 |
db.table1.find({tags:[1,2,3]}) |
|
|
|
|
|
|
|
聚合aggregate() Distinct |
use runood; db.createCollection("tab1") db.tab1.remove({}) db.tab1.insert({name:"印",type:"语文",score:50}) db.tab1.insert({name:"印",type:"语文",score:100}) db.tab1.insert({name:"印",type:"数学",score:90}) db.tab1.insert({name:"高",type:"语文",score:50}) db.tab1.insert({name:"高",type:"语文",score:20}) db.tab1.find() |
|
Select name,count(*) from tab1 group by name |
db.tab1.aggregate([{$group:{_id:"name",num_tutorial:{$sum:1}}}]) |
|
Select distinct name from tab1 |
db.tab1.distinct("name") |
|
Select distinct name from tab1 where score>50 |
db.tab1.distinct("name",{score:{$gt:50}}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
删除集合( 关系型数据库叫行,mongodb叫文档 ) |
|
|
删除hid2为5的行 |
db.table1.remove({'hid2':5}) – 不加,{multi:true}也会删除所有的数据 |
|
删除所有行 |
db.table1.remove({}) |
|
删除某个键(删除like=10 的by键) |
db.table1.update({like:10},{$unset:{"by":1}} ,{multi:true})) –-注意加上multi。否则就只删除满足条件的第一条 |
|
删除所有的by键 |
db.table1.update({},{$unset:{"by":1}},{multi:true}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
创建索引创建索引后,数据库目录下会多出一个index-开头的文件 |
db.table1.ensureIndex({"hid":1}) |
|
1表示升级排序,- 1表示降序排序, "hid":1,"hid2":-1表示组合索引, unique:true表示唯一性索引 |
db.table1.ensureIndex({"hid":1,"hid2":-1},{unique:true}); |
|
查看集合table1的索引信息 |
db.table1.getIndexes() |
|
删除集合table1的索引 |
db.table1.dropIndexes() |
|
创建用户 |
db.createUser({ user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]}); |
|
创建用户 |
db.createUser({ user:"admin1",pwd: "admin1",roles:[{role:"root", db:"admin"}]}); |
|
查询用户的三种方法 |
use admin show users db.system.users.find() db.system.users.find().pretty() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
举例 |
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } ) SELECT * FROM inventory WHERE status = "A" OR qty < 30 |
|
|
db.inventory.find({status: "A",$or: [{qty: {$lt: 30 } }, { item: /^p/ }]}) SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|