MongoDb 初入
时间:2022-07-22
本文章向大家介绍MongoDb 初入,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
mongodb适用于经常要进行操作的应用系统,适应于读写性能要求极高的场景,Hadoop则侧重于对数据的统计分析的应用。 同时mongo的处理时延一般在10ms,而Hadoop一般进行离线分析,通过mapreduce分析,一般时延较长。但是当业务中存在大量的复杂逻辑操作,不要用mongodb数据库。
mongodb 优势
- 它将热数据存储于内存中,使得热数据的读写变得非常快,从而提高了整体的速度与效率。
- 高可扩展性,Mongodb的高可用与集群架构,通过物理机的增加和分片的增加,使mongodb扩展到很快的速度。
- 自身的failover机制,当主库遇到问题,副本将选举一个新主库替代主库。
- json的数据格式易于查询和学习
mongodb 特性
mongo是非关系型数据库,存储方式是虚拟内存+持久化,通过副本集,以及分片来实现高可用。
SQL术语/概念 |
MongoDB术语/概念 |
---|---|
database |
database |
table |
collection |
row |
document |
column |
field |
index |
index |
table join |
无 |
primary key |
primary key |
connect
mongo 127.0.0.1/admin -u root -p ******
admin代表的是权限db,使用默认端口27017
CUID
mongo的数据库操作和mysql基本一致,将关键字对应后可基本安装mysql进行操作。
//create db
use DATABASE_NAME
// show database
show dbs
//insert
db.runoob.insert({"name":"菜鸟"})
//delete
db.dropDatabase()
//创建集合
use test
db.createCollection("runoob")
show collections
db.mycol2.insert({"name" : "菜鸟"})
db.mycol2.drop()
//创建文档
db.COLLECTION_NAME.insert(document)
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
db.col.find()
可以将数据定义到变量
document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
db.col.insert(document)
//更新文档
db.collection.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.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
//删除文档
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。
db.col.remove({'title':'MongoDB 教程'})
//查询文档
db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
查询 title 包含"教"字的文档:
db.col.find({title:/教/})
查询 title 字段以"教"字开头的文档:
db.col.find({title:/^教/})
查询 titl e字段以"教"字结尾的文档:
db.col.find({title:/教$/})
如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 'string'}})
db.COLLECTION_NAME.find().limit(NUMBER)
//排序
1 为升序排列,而 -1 是用于降序排列。
db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
//索引
1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可
db.collection.createIndex(keys, options)
db.values.createIndex({open: 1, close: 1}, {background: true})
创建索引时加 background:true 的选项,让创建工作在后台执行
//聚合
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
select by_user, count(*) from mycol group by by_user
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
- 34c3 部分Web Writeup
- 原来Oracle也不喜欢“蜀黍"(r6笔记第54天)
- Java基础19(01)总结IO流,异常try…catch,throws,File类
- 使用shell生成orabbix自动化配置脚本(r6笔记第53天)
- 现在 tensorflow 和 mxnet 很火,是否还有必要学习 scikit-learn 等框架?
- 数据的标准化与中心化以及R语言中的scale详解
- Java基础19(02)总结IO流,异常try…catch,throws,File类
- HTML5 — header
- 两条报警信息的分析(第二篇)(r6笔记第71天)
- 两条报警信息的分析(第一篇) (r6笔记第70天)
- R-求y=sin(X) 0-PI 面积代码
- Facebook 发布 wav2letter 工具包,用于端到端自动语音识别
- Java企业面试——Java基础
- 从Java的类型转换看MySQL和Oracle中的隐式转换(二)(r6笔记第68天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法