MongoDB学习笔记(入门 一)

nosql

关系型数据库
relational database (关系型数据库),高度组织化结构化的数据,使用结构化的查询语言(sql)。

nosql(非关系型数据库)的优势
高可扩展,分布式计算,成本低,半结构化数据

存储类型
键值存储:redis(内存),memcache(内存)
文档存储:MongoDB
列存储:Hbase

MongoDB

适用场景
网站数据、存储等大尺寸,低价值的数据,在高伸缩性的场景,用于对象和json数据的存储。

慎用场景
1、搜索场景:文档有十几个字段,需要按照任意字段进行搜索和排序
2、ERP、CRM 等复杂应用:关联性支持弱,事务性弱
3、100% 写可用:MongoDB换主节点时候会短暂不可用

存储格式
1、Json
Mongodb使用json文档存储记录

{
	name:“sabrina”     // field : value
	age: "18"         // field : value
}

2、Bson
二进制的JSON
有Date和BinData
Mongodb中的document使用Bson存储

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

安装
1、官网下载:https://www.mongodb.com/
免费下载

server启动
1、新建data目录:D:\software\MongoDB\data\db
2、使用命令行在MongoDB的bin目录执行语句:
mongod --dbpath D:\software\MongoDB\data\db
3、访问http://localhost:27017/

client访问
1、下载客户端软件Robo:https://robomongo.org/ 免费
2、new conntect:localhost:27017

语法

操作数据库(database)command
创建数据库use dbname
查看数据库show dbs
删除数据库dbname.dropDatabase()
操作集合(table)command
创建集合db.createCollection(“collName”)
查看集合show collections
删除集合db.collName.drop()
操作文档 (data)command
插入文档db.col.insert({“title1”:“value1”})
查询文档db.col.find()
更新文档db.col.update({“title1”:“value1”}, {$set:{‘title’:‘MongoDB’}})
存在替换,否则添加文档db.col.save({“title1”:“value1”})
删除文档db.col.remove({“title1”:“value1”})
条件查询commandRDBMS语句
等于db.col.find({“title”: “value”})where title = “value”
小于db.col.find({“money” : {$lt:50}})where money< 50
小于等于db.col.find({“money” : {$lte:50}})where money<= 50
大于db.col.find({“money” : {$gt:50}})where money> 50
大于等于db.col.find({“money” : {$gte:50}})where money> 50
并且db.col.find({“key1”: “value1”},{“key2”: “value2”})where key1= value1 and key2=value2
或者db.col.find({$or:[{key1:value1},{key2:value2}]})where key1=value1 or key2=value2
  • greater than 大于
  • less than 小于
  • equal 等于

其他关键字

其他语法command
$type检索集合中匹配的数据类型
Limit()读取制定数量的数据记录
skip()跳过制定数量的数据记录
sort()排序
createIndex()创建索引

聚集
对数据进行统计处理,平均数/求和/分组,支持管道(下个操作的输入值为上个操作结果集)。

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
   "result" : [
      {
         "_id" : "runoob.com",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1
}

等同于

select by_user, count(*) from mycol group by by_user
表达式描述
$sum计算总和
$avg计算平均值
$min获取文档中的最小值
$max获取文档中的最大值
$push结果文档中插入一个数组(不去重)
$addToSet在结果文档中插入值到一个数组中,但不创建副本(自动去重)
$frist获取第一个文档
$last获取最后一个文档
  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • $match:用于过滤数据,只输出符合条件的文档。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。 $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值