一、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.
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
操作界面展示
数据库链接页面
DB_CONFIG_URI=mongodb://mongodb://user:123gogogo@120.27.52.242:27758/homesite-dev

2.插入文档
db.collection.insertOne({obj});
db.collection.insertMany({obj});
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: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” } } ) 嵌套查询,查询结果如下
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
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!