mongodb介绍及基本操作
一、Mongodb简介
1-功能特性
MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。
(1)面向集合存储,容易存储对象类型的数据。
(2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。
(3)支持完全索引,可以在任意属性上建立索引。
(4)支持查询,MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。
(5)支持复制和数据恢复,MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。
(6)使用高效的二进制数据存储,包括大型对象(如视频)。使用二进制格式存储,可以保存任何类型的数据对象。
(7)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++ 语言的驱动程序,MongoDB 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。
(8)文件存储格式为BSON(JSON 的一种扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。
(9)可以通过网络访问。可以通过网络**远程访问**MongoDB 数据库。
2-介于关系型与非关系型之间的数据库
由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
3-BSON(Binary Serialized Document Format,mongodb存储类型)
它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
eg.
{name:"lemo",age:"12",address:{city:"suzhou",country:"china",code:215000} ,scores:[{"name":"english","grade:3.0},{"name":"chinese","grade:2.0}]
}
BSON常用类型符
Type | Number | Alias |
---|---|---|
Double | 1 | “doubles” |
字符串 | 2 | “string” |
对象 | 3 | “object” |
数组 | 4 | “array” |
二进制数据 | 5 | “binData” |
ObjectId | 7 | “objectId” |
Boolean | 8 | “bool” |
日期 | 9 | “date” |
空 | 10 | “null” |
正则表达式 | 11 | “regex” |
JavaScript | 13 | “javascript” |
32位整数 | 16 | “int” |
时间戳 | 17 | “timestamp” |
64位整数 | 18 | “long” |
Decimal128 | 19 | “decimal” |
Min key | -1 | “minkey” |
Max key | 127 | “maxkey” |
4-SQL映射
SQL 术语概念 | MongoDB 术语/概念 |
---|---|
数据库 | database |
表 | collection(连接) |
行 | document(文档) |
列 | field(域) |
索引 | index |
表连接 | 内嵌文档和链接 |
主键 | primary key(自动默认为 _id) |
5-可视化操作软件推荐:MongoChef
操作界面展示
存储数据展示
数据库链接页面
二、CRUD操作
(create、read、update、delete)
1.链接数据库
//API link
mongoose.connect('mongodb://user:pass@localhost:port/database');// replica sets
var uri = 'mongodb://user:pass@localhost:port,anotherhost:port,yetanother:port/mydatabase';
mongoose.connect(uri);// with options
mongoose.connect(uri, options);// connecting to multiple mongos
var uri = 'mongodb://hostA:27501,hostB:27501';
var opts = { mongos: true };
mongoose.connect(uri, opts);// optional callback that gets fired when initial connection completed
var uri = 'mongodb://nonexistent.domain:27000';
mongoose.connect(uri, function(error) {// if error is truthy, the initial connection failed.
})
项目url配置文件
DB_CONFIG_URI=mongodb://mongodb://user:123gogogo@120.27.52.242:27758/homesite-dev
2.插入文档
db.collection.insertOne({obj});
db.users.insertOne({name: "sue",age: 19,status: "P"}
)
db.collection.insertMany({obj});
db.users.insertMany([{ name: "bob", age: 42, status: "A", },{ name: "ahn", age: 22, status: "A", },{ name: "xi", age: 34, status: "D", }]
)
db.collection.insert(update,opations)
主键_id将被自动创建
当主键”_id”不存在时,都是添加一个新的文档,但主健”_id”存在时,就有些不同了
insert:当主键”_id”在集合中存在时,不做任何处理。
save:当主键”_id”在集合中存在时,进行更新。
opations中,ordered:true 有序插入,
3.查询文档
db.collection.find( , )
参数一为查询条件,参数二为返回的字段。
查询语句db.users.find( { status: “A” }, { name: 1, status: 1, _id: 0 } )返回结果如下:
{ "name" : "bob", "status" : "A" }
{ "name" : "ahn", "status" : "A" }
{ "name" : "abc", "status" : "A" }
name:1,status:1 意为查询返回值中包含name字段与status字段; _id: 0 意为不返回_id的值
db.users.find( { name: null } ) 意为返回name为空或者不存在name字段的所有文档(数据)。
db.users.find( { name : { $exists: false } } ) 意为查询没有包含条目的字段
db.users.find( { name : { $type: 10 } } ) 意为查询所有字段是null的文档
db.users.find( { status: “A”, age: { $lt: 30 } } ) 查询所有status值为A且age小于30文档
db.users.find( { favorites: { artist: “Picasso”, food: “pizza” } } ) 嵌套查询,查询结果如下
{"_id" : 1,"name" : "sue","age" : 19,"type" : 1,"status" : "P","favorites" : { "artist" : "Picasso", "food" : "pizza" },"finished" : [ 17, 3 ]"badges" : [ "blue", "black" ],"points" : [ { "points" : 85, "bonus" : 20 }, { "points" : 85, "bonus" : 10 } ]
}
4.更新替换
db.collection.updateMany(filter, update, options)
使用updateMany一次更新多条数据。
db.collection.updateOne(filter, update, options)
使用updateOne一次更新一条数据。
db.collection.update(filter, update, options)
使用updateOne更新数据。
filter:筛选出被过滤的文档
update:更新的数据
options:设定替换的一些设置(如:upsert:true 查询不到文档时创建新的文档、multi:true 更新符合条件的多个文档…)
5.删除文档
db.collection.remove(query,options)
query:删除文档的条件,为空时清空collection(表/链接)
eg.
db.products.remove( { qty: { $gt: 20 } } )(删除所有qty大于20的文档记录)
options: 参数示例 justOne:true 只删除匹配到的第一条数据
db.products.remove( { qty: { $gt: 20 } }, true ) 删除所有qty大于20的文档记录的第一条
> ## END
mongodb介绍及基本操作相关推荐
- MongoDB学习笔记(一) MongoDB介绍及安装
系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jq ...
- MongoDB数据表基本操作
MongoDB数据表基本操作 查看全部数据表 > use ChatRoom switched to db ChatRoom > show collections Account Chat ...
- MATLAB主窗口中 主菜单栏有,Matlab介绍与基本操作.ppt
Matlab介绍与基本操作 MATLAB介绍与基本操作 数学软件与Matlab的关系 国际上最常用的三种数学类科技应用软件为:3M Matlab Mathematica Maple P.S:还有Mat ...
- 【Selenium IDE】菜单栏和工具栏介绍和基本操作:编辑/录制、导出、运行
前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210416. selenium IDE selenium IDE结合浏览器提供脚本的录制,回放以及编辑脚本功能,以及元素的定位 ...
- MongoDB笔记记录(雷哥课堂)--mongodb介绍
1 MongoDB介绍 1.1 应用场景 传统的关系型数据库(如MySQL),在应对当下互联网产品的某些需求面前,显得力不从心 数据库高写入负载需求 对海量数据的高效率存储和读取 对数据库的高扩展性的 ...
- 1. 初探MongoDB —— 介绍、安装和配置
一.写在前面 之前一直以来,都是使用关系型数据库.也很早就听闻,当数据量大的时候,关系型数据库使用起来会有很多问题.诸如查询数据慢,加载花费时间长等等. 也早就耳闻NOSQL(NoSQL = Not ...
- 二、MongoDB简介及基本操作
mongodb是一个基于文档的强大.灵活.易于扩展的通用型数据库.是基于分布式文件存储的数据库.其由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. mongodb也是一个 ...
- HBase学习总结(2):HBase介绍及其基本操作
(HBase是一种数据库:Hadoop数据库,它是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据.在已成功安装并正常启动的前提下,本文介绍HBase的基本操作.) 一.HBase简介 什么 ...
- mongoDB 介绍(特点、优点、原理)
介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点:高性能.易部署.易使用,存储数据非常方便. 主要功能特性有: Ø 面 ...
最新文章
- 关于oracle数据库的操作的命令
- 华思视频 CCNA 听而思
- Spring Boot集成CKFinder
- 银行家算法:解决多线程死锁问题
- 小鹏汽车提交赴美IPO:上半年营收1.42亿美元 何小鹏持股31.6%为最大股东
- linux,想说爱你真的很不容易!
- ADO.NET 2.0 功能一览
- ORM框架使用优缺点
- 计算机abcd地址,IP地址ABCDE的分类说明
- 超级简单的纯js 象棋,看一遍你也会写
- 怎么才能转到计算机专业申请书,大学转专业的申请书范文
- 4.证券投资基金的监管
- android notification应用之自定义来电通知
- 幸福总会来的,对吗?
- C# Excel导出超出65536行报错
- 【C语言】强符号与弱符号
- 接手1号店的京东 更看重与沃尔玛的合作
- 全球及中国高岭土市场运行规模与投资发展建议报告2022版
- socket用法linux,linux下socket用法
- 数据集的处理(持续记录)
热门文章
- 了解Netsparker扫描器
- CVPR2014结果出来了,小伙伴们赶紧来啊~~~~
- 《焦虑心理学》—— 完美主义者的修行
- NVIDIA GPU硬件架构发展(截至2022年)
- OpenCV里IplImage数据结构中的width和widthStep
- 千万不要招实习生啊!!!!
- python winform开发_c#教程之.Net WInform开发笔记(三)谈谈自制控件(自定
- 清华大学唐杰教授:认知图谱是人工智能的下一个瑰宝(附PPT下载)
- 【解决方案】“云端协同”,基于安防视频云服务EasyCVR构建雪亮工程监管视频平台
- 一款最流行的MVPArms MVP快速集成框架Retoift,Okhttp,RxCache,Gson,RxLifeCycle, Dagger2,Rxjava,ImageLoader