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}})
网友评论