如何在 CentOS 平台上安装 mongodb 社区版?
[mongodb-org-3.6]name=MongoDB Repositorybaseurl=gpgcheck=1enabled=1gpgkey=yum install -y mongodb-org
MongoDB如何启动、停止与重启?
service mongod start // 启动mongod服务chkconfig mongod on // 查看mongod服务是否启动成功service mongod stop // 停止mongod服务service mongod restart // 重启mongod服务
如何连接MongoDB服务器?
mongo --host 127.0.0.1:27017 // 27017是MongoDB的默认端口
在 CentOS上如何卸载 MongoDB?
service mongod stop // 停止mongod服务yum erase $(rpm -qa | grep mongodb-org)rm -r / var /lib/mongo // 删除mongodb数据rm -r /var/log/mongodb // 删除mongodb日志
MongoDB 简介
参考资源: Introduction to MongoDB
MongoDB有哪些特点?什么是BSON?什么是无模式、分片、副本集、 索引 ?
MongoDB 是一个开源的文档数据库,特点是高性能、高可用、自动定标。
什么是文档数据库?
一个文档,即是MongoDB中的一条记录。文档是一种键值对形式的数据结构,类似于JSON对象。文档中键值对的值,可以是数组等常见的数据类型,还可以是另一个文档,或者是由文档组成的数组。
{ name: "sue", age: 26, status: 0, groups: [ "news", "sports"]}
文档数据库有哪些优势?
更接近大多数编程语言所常用的数据类型,减少了数据联合所带来的性能开销,动态的 Schema 支持流畅的多态性。
MongoDB的核心特性有哪些?
- 高性能
- 丰富的Query语句
- 高可用性
- 支持水平扩展
- 支持多种数据存储引擎
MongoDB数据库、集合、文档之间有着怎样的关系?
Databases and Collections 详解
Documents 详解
MongoDB存储的是 BSON文档,每个文档即为一条数据记录,记录存储在集合中,集合存储在数据库中。
MongoDB数据库.png
BSON Types 数据类型
BSON Types 数据类型
什么是 BSON Types 数据类型?有哪些常用的数据类型?
什么是 ObjectId ?有什么用?
在MongoDB中,集合中的每一个文档都要求有一个 _id 字段,这个 _id 扮演着“ 主键 ”的角色,它的数据类型是 ObjectId 。当向集合中插入文档时,如果省略了 _id 这个字段,MongoDB会自动地为该文档创建一个 _id 。
new ObjectId(); // ObjectId类型Date类型new Date();Date();NumberLong类型NumberInt类型NumberDecimal类型NumberLong("2090845886852");db.collection.insertOne( { _id:10, calc: NumberLong("20124523645") } );
如何进行字段的类型判断?
instanceof 关键字mydoc._id instanceof ObjectId;typeof 关键字typeof mydoc._id;
使用 mongo Shell
- mongo Shell 官网手册(常用)
- mongo shell 简介
- 如何配置自定义的 mongo命令?
- 如何更好地使用 mongo帮助文档?
- 如何在mongo中执行JavaScript脚本?
如何使用帮助文档?有哪些键盘快捷键可以使用?文档的增删改查?条件查询?分页查询?排序?统计?
什么是 mongo Shell ?
mongo Shell 是一个用于与MongoDB服务器进行交互的javascript接口。使用它可以对MongoDB中的数据进行各种操作。
如何启动 mongo Shell ?
./bin/mongo // 启动 mongo Shell
如何连接MongoDB服务器?
mongo --help // 查看帮助文档1、使用mongo命令连接服务器mongo --host localhost:27017mongo --host 127.0.0.1:27017 // 连接mongodb 服务器2、使用 Mongo()构造器创建连接conn = new Mongo("host:port");db = conn.getDB("dbname");cursor = db.collection.find();while ( cursor.hasNext() ) { printjson( cursor.next() );}
如何退出mongo Shell?
quit() // 退出 mongo Shell或者使用 Ctrl + C 退出mongo Shell
如何在mongo中执行 js脚本?
mongo text --eval "printjson( db.getCollectionNames() )"mongo localhost:27017/test myjsfile.jsload( "/data/db/scripts/myjsfile.js" )
如何灵活地使用mongo帮助文档?
help // 查看帮助文档db.help() // 查看数据库helpdb.collection.help() // 查看集合的helpdb.collection.find().help() // 查看指针的helphelp misc
mongo如何使用?CRUD操作?
help // 查看帮助文档show dbs // 查看数据库列表use dbname // 选中并进入一个数据库db // 查看当前正在使用的数据库show collections; // 查看集合列表db. users .insert({"name":"geek"}); // 创建新的集合 users。MongoDB的集合,直到向其中插入了数据时才会真正被创建。db.users.find() // 查看当前集合中所有的数据, _id是mongodb文档中默认的“主键”字段。db.users.find().count(); // 查询集合中数据的条数db.users.find({"_id":ObjectId("23039jbsllkklkdskdldsld")}); // 以_id为查询条件的查询 db.users.update({"name":"lucy"}, {$set:{"group":"writer"}}); // 更新一条数据db.users.update({"name":"lucy"}, {$set:{"group":"writer"}}, {multi:true}); // 更新所有满足条件的数据。db.users.save({"_id":ObjectId("ipiwoeiwoeoiwe"), "group":"reporter"}); // 覆盖式更新,重点区分update()和save()异同。db.users.remove({"group":"writer}); 删除所有满足条件的数据db.users.remove({"group":"writer},true); 删除第一条满足条件的数据。db.users.remove({}); 删除集合中的所有数据,即数据清零。db.users.drop(); 彻底删除(删除数据,并删除集合的索引)
使用 mongoose
mongoose模块,用于在node程序中使用mongoose操作MongoDB数据库。
- MongoDB是无模式的数据库。
- 安装mongoose : npm install mongoose
- 连接mongodb服务器
- Schema,创建Schema数据结构。
- Model,创建Model数据模型。
mongoose中还有哪些高阶功能?
- mongoose模式的扩展
- (1)为文档属性指定数据类型和默认值
- (2) 修饰符:setter修改符,当数据存入数据库之前对数据进行处理。getter修改符,当数据从数据库中取出后对数据进行处理。
- (3)虚拟属性
- (4)索引、辅助索引
- mongoose模型的方法
- (1)静态方法
- (2)实例方法
- (3)自定义方法
- mongoose的数据校验
- (1)预定义的验证器
- (2)自定义验证器 validate
- 使用mongoose 中间件
- (1)文档中间件:在执行文档数据初始化、验证、保存或删除的过程中执行。
- (2)查询中间件:在文档数据的增删改查的过程中执行。
- (3)预处理中间件:在文档数据执行操作之前执行。
- (4)后置处理中间件:在文档数据执行操作之后执行。
- 中间件存在的意义:即在某些操作之前或之后执行用户自定义的操作。这些自定义操作即为中间件,next()是核心。
- DBRef多集合操作
- 作用:实现多个不同集合之间的交叉引用。
- (1)ref属性
- (2)populate()方法
作者:夏海峰
链接: