一、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介绍及基本操作相关推荐

  1. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  2. MongoDB数据表基本操作

    MongoDB数据表基本操作 查看全部数据表 > use ChatRoom switched to db ChatRoom > show collections Account Chat ...

  3. MATLAB主窗口中 主菜单栏有,Matlab介绍与基本操作.ppt

    Matlab介绍与基本操作 MATLAB介绍与基本操作 数学软件与Matlab的关系 国际上最常用的三种数学类科技应用软件为:3M Matlab Mathematica Maple P.S:还有Mat ...

  4. 【Selenium IDE】菜单栏和工具栏介绍和基本操作:编辑/录制、导出、运行

    前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210416. selenium IDE selenium IDE结合浏览器提供脚本的录制,回放以及编辑脚本功能,以及元素的定位 ...

  5. MongoDB笔记记录(雷哥课堂)--mongodb介绍

    1 MongoDB介绍 1.1 应用场景 传统的关系型数据库(如MySQL),在应对当下互联网产品的某些需求面前,显得力不从心 数据库高写入负载需求 对海量数据的高效率存储和读取 对数据库的高扩展性的 ...

  6. 1. 初探MongoDB —— 介绍、安装和配置

    一.写在前面 之前一直以来,都是使用关系型数据库.也很早就听闻,当数据量大的时候,关系型数据库使用起来会有很多问题.诸如查询数据慢,加载花费时间长等等. 也早就耳闻NOSQL(NoSQL = Not ...

  7. 二、MongoDB简介及基本操作

    mongodb是一个基于文档的强大.灵活.易于扩展的通用型数据库.是基于分布式文件存储的数据库.其由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. mongodb也是一个 ...

  8. HBase学习总结(2):HBase介绍及其基本操作

    (HBase是一种数据库:Hadoop数据库,它是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据.在已成功安装并正常启动的前提下,本文介绍HBase的基本操作.) 一.HBase简介 什么 ...

  9. mongoDB 介绍(特点、优点、原理)

    介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点:高性能.易部署.易使用,存储数据非常方便. 主要功能特性有: Ø 面 ...

最新文章

  1. 关于oracle数据库的操作的命令
  2. 华思视频 CCNA 听而思
  3. Spring Boot集成CKFinder
  4. 银行家算法:解决多线程死锁问题
  5. 小鹏汽车提交赴美IPO:上半年营收1.42亿美元 何小鹏持股31.6%为最大股东
  6. linux,想说爱你真的很不容易!
  7. ADO.NET 2.0 功能一览
  8. ORM框架使用优缺点
  9. 计算机abcd地址,IP地址ABCDE的分类说明
  10. 超级简单的纯js 象棋,看一遍你也会写
  11. 怎么才能转到计算机专业申请书,大学转专业的申请书范文
  12. 4.证券投资基金的监管
  13. android notification应用之自定义来电通知
  14. 幸福总会来的,对吗?
  15. C# Excel导出超出65536行报错
  16. 【C语言】强符号与弱符号
  17. 接手1号店的京东 更看重与沃尔玛的合作
  18. 全球及中国高岭土市场运行规模与投资发展建议报告2022版
  19. socket用法linux,linux下socket用法
  20. 数据集的处理(持续记录)

热门文章

  1. 了解Netsparker扫描器
  2. CVPR2014结果出来了,小伙伴们赶紧来啊~~~~
  3. 《焦虑心理学》—— 完美主义者的修行
  4. NVIDIA GPU硬件架构发展(截至2022年)
  5. OpenCV里IplImage数据结构中的width和widthStep
  6. 千万不要招实习生啊!!!!
  7. python winform开发_c#教程之.Net WInform开发笔记(三)谈谈自制控件(自定
  8. 清华大学唐杰教授:认知图谱是人工智能的下一个瑰宝(附PPT下载)
  9. 【解决方案】“云端协同”,基于安防视频云服务EasyCVR构建雪亮工程监管视频平台
  10. 一款最流行的MVPArms MVP快速集成框架Retoift,Okhttp,RxCache,Gson,RxLifeCycle, Dagger2,Rxjava,ImageLoader