分分钟进阶MongoDB

[toc]

数据库

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 第一个{}表示查询范围 全部

db.duobiao.find({"book":"huanshu","price":"18"})
条件之间的 , 相当于 and
RDBMS 采用的 WHERE 子句将会是: where by='tutorials point' AND title='MongoDB Overview'

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

db.duobiao.find({book:'huanshu',$or:[{price:'18'},{price:'19'}]})
这个是and or一起使用
意:满足  book and pirce 18/19才可显示  所以只显示一个表

更新文档 update

更新文档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

猜你喜欢

转载自my.oschina.net/wuzsheng/blog/1801601
今日推荐