分分钟进阶MongoDB

mongoDB结构图

数据库

use mydb   //创建数据库,有则切换该数据库
db.dropDatabase()  //删除数据库
db    //显示当前位置
show dbs  //查看数据库列表
# mongo wu  //直接登录mongo并进入wu数据库

db.stats  //显示当前数据库状态
db.version()  //当前db版本
db.getMongo()  //当前db的链接机器地址
db.getPrevError() //查询之前的错误信息
db.resetError() //清除错误记录

集合

db.createCollection("wu"); //创建集合
db.zhi.insert({name:"zhi",age:8});  //创建集合并插入数据

//创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

db.zhi.drop(); //删除集合

show tables;  //显示集合
show collections;  //显示集合

db.zhi.renameCollection("wu")  //集合重命名
db.zhi.count()  //查询当前集合的数据条数
db.zhi.dataSize() //集合数据大小(字节)
db.zhi.totalIndexSize()  //查看集合索引大小
db.zhi.totalSize()  //显示集合大小(索引,数据)
db.zhi.stats()  //显示集合状态
db.printCollectionStats()  //当前db所有集合的状态信息

文档

插入数据
插入数据

方法一:
db.zhi.insert({
name:'lufei',
sex:'man',
destination:'haizeiwang',
team:['suolong','xianjishi','shengping']})

方法二:
定义变量
man=({name:'aishi',
... sex:'man',
... age:'18'})
db.col.insert(man)


方法三:
一个集合插入多文档
> db.zhi.insert([
{book:'huanshu',price:'18',quantity:'good'}, 
{woman:'chang teacher',sex:'nv',service:[{server1:'kuaicang',price:666},{server2:'baoye',price:999}]}
 ])
//[{},{},{}],[]作用是包含多个{}且每个表的列可以不相同


db.zhi.save()  //具有插入和更新数据功能
//将col文档数据 替换为  以下数据(内容自己创建)
>db.zhi.save({
"_id" : ObjectId("222"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com";,
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
删除文档
# 语法:
db.collection.remove()

#直接将条件为title':'MongoDB 教程' 的文档整个删除
db.col.remove({'title':'MongoDB 教程'})

#只删  第一个 满足该条件 文档
db.col.remove({'title':'MongoDB 教程'},1)

#删除所有数据
db.col.remove({})
查询文档
db.zhi.find()   //集合zhi的数据
db.duobiao.findOne()  #显示一行
db.zhi.find().pretty() //有格式输出,集合zhi所有文档
db.zhi.find({title:"wzs"}).pretty() //集合zhi中,title:“wzs”文档

显示满足sex:man 或 title:wzs条件文档
db.col.find({$or:[{sex:"man"},{title:'wzs'}]}).pretty()

类似常规 SQL 语句为:'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": { $gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

db.col.find({"likes" : {$gt : 100}})
类似于SQL语句:
Select * from col where likes > 100;
$gte 相当于  >=
$lte 相当于   <=
$ne 相当于   !=

db.col.find({likes : {$lt :200, $gt : 100}})
#类似于SQL语句:
Select * from col where likes>100  AND  likes<200;

//显示age为8和21的文档
db.col.find({"age":{$in:[8,21]}})

//显示除了age为8和21的文档
db.wu.find({"age":{$nin:[8,21]}})
// limt和skip
db.sheng.find().limit(2)  
//显示集合两条文档db.sheng.find({},{_id:0,title:1}).limit{2}  //显示集合sheng,前两条的title信息注意没有{},则没有显示{_id:1,title:0} 也不会显示id等价于> db.col.find({},{_id:0,title:1}).limit(1).skip(1)skip(1)是跳过第一个

db.duobiao.find({}).limit(1).skip(1)
//limit 限制数输出
//skip 跳过几行
//显示第二行

db.genxin.find({},{name:1,_id:0}).sort({name:-1})
//sort({name:-1})  倒序  默认升序

db.duobiao.find({},{book:1,"_id":0}).pretty()  //1代表显示,0不显示。默认为1
//第一个{}表示查询范围  全部
#条件之间的 , 相当于 and
#RDBMS 采用的 WHERE 子句将会是: where by='tutorials point' AND title='MongoDB Overview'
db.duobiao.find({"book":"huanshu","price":"18"})

//$or:[{},{}] 相当于 or  {}与{}之间的条件可以是不同行
db.duobiao.find({$or:[{book:"huanshu"},{name:"xxxxx"}]})

//这个是and or一起使用
//意:满足  book and pirce 18/19才可显示  所以只显示一个表
db.duobiao.find({book:'huanshu',$or:[{price:'18'},{price:'19'}]})
更新文档
#更新文档col中title
db.zhi.update({title:'MongoDB 教程'},{$set:{title:'wzs'}})  

//若要修改多条相同的文档,则需要设置 multi 参数为 true
db.zhi.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})  

//更新单个文档
//以name:'abc'为查询条件,将 age数据更新为28
db.zhi.insert( {"name":"abc","age":"25","status":"zxc"})
dbzhi.updateOne({"name":"abc"},{$set:{"age":"28"}})

//更新多个文档
db.zhi.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
//$gt:"10" 大于 10

#$set
//更新文档col中title字段
db.zhi.update({title:'MongoDB 教程'},{$set:{title:'wzs'}})

//若要修改多条相同的文档,则需要设置 multi 参数为 true
>db.zhi.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

//更新单个文档
//以name:'abc'为查询条件,将 age数据更新为28
db.zhi.insert( {"name":"abc","age":"25","status":"zxc"})
dbzhi.updateOne({"name":"abc"},{$set:{"age":"28"}})

//更新多个文档
> db.zhi.updateMany({"age":{$gt:"10"}},{$set:{"status":"xyz"}})
//$gt:"10" 大于 10

#$rename
//mane为’zhi’的文档把字段age修改为ages
db.wu.update({name:'zhi'},{$rename:{'age':'ages'}})

#$unset
//取消字段,去掉文档的某个字段
db.wu.update({name:'jiang'},{$unset:{"company":1}})
{"company":1}  //所要删除字段 值 填1或者真实值都行

#$push
//把元素追加到数组字段中,如字段不存在,则新增一个数组类型的字段
db.wu.update({name:'jiang'},{$push:{phone:{age:12,address:'haha'}}})

#$pushAll
//$push追加一个元素   $pushAll追加多个元素
db.wu.update({name:'b'},{$pushAll:{phone:[{home:'ha'},{moblie:132}]}})

#$addToSet
//增加一个值到数组内(没有才增加,有则不增加,避免重复)
db.wu.update({name:'zhi'},{$addToSet:{phone:{file1:'456',wu: 'hash'}}})

#$pop
//只能删除数据第一个 或  最后一个
//1  删除数组最后一个元素;-1  则删第一个
db.wu.update({name:'b'},{$pop:{phone:1}})

#$pull
//删除数组中满足条件的元素
db.wu.update({name:'b'},{$pull:{phone:{home:'ha'}}})

#$inc
//用于增加或减少数值
//把name为a的文档age增加20;-20则减少20
db.wu.update({name:"a"},{$inc:{age:20}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值