Mongodb常见指令

Mongodb常见指令

SQL与NOSQL简介

  • ​SQL

    关系模型适合于客户服务器编程,远远超出预期利益

    关系型数据库遵循A(原子性) C(一致性) I(独立性) D(持久性)

  • NOSQL
    非关系型数据库,用于超大规模数据的存储,无需多余操作就可以横向扩展

    关系模型适合于客户服务器编程,远远超出预期利益

MongoDB

简介

基于分布式文件存储,为WEB应用提供可扩展的高性能数据存储解决方案

MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。文档类似于JSON对象。

  1. MongoDB区分类型和大小写
  2. MongoDB文档不能有重复的键
  3. 文档中键值对是有序的
  4. 文档中值不仅可以使字符串,还介意是其他数据类型
  5. 文档键是字符串,可使用UTF-8字符

注意:键不能含有\0空字符,$不能使用,_开头的键是保留的

数据类型

String、Integer、Boolean、Double、

Min/Max keys 将一个值与BSON(二进制的json)元素最低值和最高值对比、

Array、Timestramp、Object、Null、

Symbol(符号)、Date、Object ID、Binary Data、Code(代码类型)、Regular expression(正则表达式)

常见密令

启动:net start mongoDB

关闭:net stop mongoDB

后台管理shell: mongo

查看数据库:show dbs

进入数据库:use dbname

查看当前所属数据库:db

删除数据库:db.dropDatabase()

创建集合:db.createCollection(name,options) mongodb不需要创建集合,在插入文档时,会自动创建集合

删除集合:db.collectionname.drop()

插入文档:

1.db.collectionname.insert(document)

db.color.insert({red:'1',green:'2',blue:'3',purple:'4',gray:'5',pink:'6',orange:'7',yellow:'8',white:'9',black:'10'}) WriteResult({ "nInserted" : 1 })

2.将数据定义为一个变量document,然后执行插入操作db.collectionname.insert(document)

document=({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库',by: '菜鸟教程',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100});
db.cainiao.insert(document)

查看文档内容:

db.collectionname.find()   
#会水平输出

更新文档:
db.collectionname.update(
​ <query>,
​ <update>,
​ {
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
​ }
)
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别

db.cainiao.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
#查看文档:
db.cainiao.find().pretty()   
#会竖直输出
#删改某一条数据
db.getCollection('system_menu').update({"name":"蜻蜓列表"},{$set:{path:"fm/list?type=album"}})

保存文档

db.collectionname.save(
<document>,
​ {
​ writeConcern: <document>
​ }
​ )
document : 文档数据。
writeConcern :可选,抛出异常的级别。

db.cainiao.save(document) 

删除文档: remove() 在执行remove之前先find判断执行的条件是否正确
db.collection.remove(
​ <query>,
​ {
​ ustOne: <boolean>,
​ writeConcern: <document>
​ }
)
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别

db.cainiao.insert(document)
db.cainiao.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库',by: '菜鸟教程',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100})
db.cainiao.remove({'title':'MongoDB 教程'})   删除全部
db.cainiao.remove({'title':'MongoDB 教程'},1) 删除一条

查询文档: find()
db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

#易读取数据,可以使用 pretty()方法,pretty()以格式化的方式来显示所有文档。
#除了find()方法还有findOne()方法,只返回一个文档
#条件语句查询:
   等于 {<key>:<value>} 
   小于 {<key>:{$lt:<value>}}
   大于 {<key>:{$gt:<value>}}
   小于等于 {<key>:{$lte:<value>}}
   大于等于 {<key>:{$gte:<value>}}
   不等于 {<key>:{$ne:<value>}}
    
#AND条件 每个键以逗号隔开
db.cainiao.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
#OR条件  使用关键字$or
db.cainiao.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
#AND与OR联合使用
db.cainiao.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

$type操作符
​ $type是基于BSON类型来检索集合中匹配的数据类型,并返回结果

#获取title为字符串String类型的数据
db.col.find({"title" : {$type : 2}})
#或
db.col.find({"title" : {$type : 'string'}})

Limit与Skip方法
​ limit:

db.collectionname.find().limit(number)
#获取title这一列数据两条
db.col.find({},{"title":1,_id:0}).limit(2)  
#skip:
db.collectionname.find().limit(number).skip(number)
#使用skip()方法来跳过指定数量的数据
#Sort()方法
db.collectionname.find().sort({KEY:1})
#ex:
db.col.find({},{"title":1,_id:0}).sort({"likes":-1}) 按降序排列

索引

创建索引:

createIndex()方法

db.collection.createIndex(keys, options)

keys:值为你要创建的索引字段

options:1为指定按升序创建,-1按降序来创建

重建索引:

reIndex()方法

db.collectionname.reIndex()

查看索引:

getIndexes()方法

db.collectionname.getIndexes()

删除索引:
dropIndex()方法

db.collectionname.dropIndex("indexname")

聚合
aggregate()方法
ex:

db.col.aggregate([{$group:{_id:"$title",num:{$sum:1}}}])

聚合表达式:
​ $sum 计算综合
​ $avg 计算平均值
​ $min 获取最小值
​ $max 获取最大值
​ $push 将结果文档插入到一个数组中
​ $addToSet 将结果文档插入到数组中,但不创建副本
​ $first 根据排序获取第一个数据
​ $last 获取最后一个数据
​ 管道:
​ 在linux和unix一般用于将当前命令的输出结果座位下一个命令的参数
​ MongoDB的聚合管道将MongoDB文档在一个管待处理完毕后将结果传递给下一个管道,可重复操作
​ MongoDB常用管道操作:
​ $project 修改输入文档的结构
​ $match 过滤数据,输出符合条件的文档
​ $limit 限制聚合管道返回文档数
​ $skip 在聚合管道中跳过指定数量文档
​ $unwind 将文档中某一数组类型字段拆分成多条,每条包含数组中一个值
​ $group 将集合中文档分组,便于统计
​ $sort 将输入文档排序后输出
​ $geoNear 输出接近某一地理位置的有序文档

db.col.aggregate({$project:{title:1,by:1,_id:0}}) 
#输出title,by两列
db.col.aggregate([{$match:{likes:{$gt:120,$lte:200}}},{$group:{_id:"$title",count:{$sum:1}}}]) 
#输出likes大于120,小于等于200的以title分组的个数
db.col.aggregate([{$skip:1},{$limit:1}]) 
#输出跳过一条数据然后输出一条
开发中学到的密令

创建联合索引

db.cainiao.ensureIndex({enable:1,"resource.rsid":1,type:1} , {backgroud:true})

查看某个字段的所有存在值

db.cainiao.distinct({},"type")
#前边括号内可以填写查询条件,后边括号内为查询字段

总结

以上密令在基本开发过程中足以使用,有什么不足的方面欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值