[React] 04 - Intro: mongoDB becomes popular
- 安装:
sudo apt-get install mongodb
安装完毕产生:- ls /etc/init.d/mongodb
- 配置:
vim /etc/mongod.conf- 卸载:
sudo apt-get --purge remove mongodb mongodb-clients mongodb-server
Ubuntu 14.14的版本有点老,还是下载安装新版本吧。
1. 默认数据文件夹在/data/db。
2. 先启动服务。
- $ ./mongod
- --25T16::50.549+ I JOURNAL [initandlisten] journal dir=/data/db/journal
- --25T16::50.550+ I JOURNAL [initandlisten] recover : no journal files present, no recovery needed
- --25T16::50.869+ I JOURNAL [initandlisten] preallocateIsFaster=true 3.16
- --25T16::51.206+ I JOURNAL [initandlisten] preallocateIsFaster=true 3.52
- --25T16::52.775+ I JOURNAL [initandlisten] preallocateIsFaster=true 7.7
3. MongoDB后台管理 Shell。
- $ cd /usr/local/mongodb/bin
- $ ./mongo
- MongoDB shell version: 3.0.
- connecting to: test
- Welcome to the MongoDB shell.
- ……
4. 或者,MongoDB Compass 图形界面管理工具。
5. 检查 MongoDB 是否成功启动
- ps -ef | grep mongod
- sudo service mongod stop // 关闭
sudo service mongod restart // 重新启动
来源于:Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)
举一个例子:
From: https://github.com/yinxin630/fiora/blob/master/server/main.js
- const mongoose = require('mongoose');
- const fs = require('fs');
- const path = require('path');
- const app = require('./app');
- const config = require('../config/server');
- const checkVersion = require('../build/check-versions');
- const Socket = require('./models/socket');
- const Group = require('./models/group');
- const getRandomAvatar = require('../utils/getRandomAvatar');
- mongoose.Promise = Promise; // ---->
- checkVersion();
- function createDirectory(directoryPath) {
- if (!fs.existsSync(directoryPath)) {
- fs.mkdirSync(directoryPath);
- }
- }
- mongoose.connect(config.database, async (err) => {
- if (err) {
- console.error('connect database error!');
- console.error(err);
- return process.exit(1);
- }
- const group = await Group.findOne({ isDefault: true });
- if (!group) {
- const defaultGroup = await Group.create({
- name: 'fiora',
- avatar: getRandomAvatar(),
- announcement: '欢迎光临Fiora, 这是一个开源/自由的聊天室',
- isDefault: true,
- });
- if (!defaultGroup) {
- console.error('create default group fail');
- return process.exit(1);
- }
- }
- createDirectory(path.join(__dirname, '../public'));
- app.listen(config.port, async () => {
- await Socket.remove({});
- console.log(` >>> server listen on http://localhost:${config.port}`);
- });
- });
Ref: NodeJs回调操作Promise化
【不是很懂】
看来很有必要把相关菜鸟教程和异步执行方法过一遍。
Ref: MongoDB 概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
Ref: MongoDB - 连接
命令行模式
- > mongodb://admin:123456@localhost/
- > mongodb://admin:123456@localhost/test
更多实例见原链接。
Ref: MongoDB 创建数据库
- > use runoob
- switched to db runoob
- > db
- runoob // 当前表,有点git的branch的意思
- >
- // 然后掺入一些数据才能够show显示出
- > db.runoob.insert({"name":"菜鸟教程"})
- WriteResult({ "nInserted" : 1 })
- > show dbs
- local 0.078GB
- runoob 0.078GB
- test 0.078GB
- >
Ref: MongoDB 创建集合
- > use test
- switched to db test
- > db.createCollection("runoob")
- { "ok" : 1 }
- >
- > show collections
- runoob
- system.indexes
Ref: MongoDB 插入文档
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
该“表”(集合)插入一行,并查看插入内容。【col是collection的意思】
- >db.col.insert({title: 'MongoDB 教程',
- description: 'MongoDB 是一个 Nosql 数据库',
- by: '菜鸟教程',
- url: 'http://www.runoob.com',
- tags: ['mongodb', 'database', 'NoSQL'],
- likes: 100
- })
- > db.col.find()
- { "_id" : ObjectId("56064886ade2f21f36b03134"),
- "title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [ "mongodb", "database", "NoSQL" ],
"likes" : 100 }- >
或者,定义为一个变量后,再插入。
- > document=({title: 'MongoDB 教程',
- description: 'MongoDB 是一个 Nosql 数据库',
- by: '菜鸟教程',
- url: 'http://www.runoob.com',
- tags: ['mongodb', 'database', 'NoSQL'],
- likes: 100
- });
- > db.col.insert(document)
- WriteResult({ "nInserted" : 1 })
- >
Ref: MongoDB 更新文档
通过 update() 方法来更新标题(title)。
- >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
- WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
- > db.col.find().pretty()
- {
- "_id" : ObjectId("56064f89ade2f21f36b03136"),
- "title" : "MongoDB",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "菜鸟教程",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "database",
- "NoSQL"
- ],
- "likes" : 100
- }
- >
如果要修改多条相同的文档,则需要设置 multi 参数为 true。
- >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
或者,通过save方法,直接替换掉这一行(document)
- >db.col.save({
- "_id" : ObjectId("56064f89ade2f21f36b03136"),
- "title" : "MongoDB",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "Runoob",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "NoSQL"
- ],
- "likes" : 110
- })
Ref: MongoDB 查询文档
单个键值:
以易读的方式来读取数据,可以使用 pretty() 方法。
- > db.col.find().pretty()
- {
- "_id" : ObjectId("56063f17ade2f21f36b03133"),
- "title" : "MongoDB 教程",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "菜鸟教程",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "database",
- "NoSQL"
- ],
- "likes" : 100
- }
对应关系,帮助理解。
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {<key>:<value> } |
db.col.find({"by":"菜鸟教程"}).pretty() |
where by = '菜鸟教程' |
小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
多个键值
多个键(key),每个键(key)以逗号隔开。
- AND
- > db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
- {
- "_id" : ObjectId("56063f17ade2f21f36b03133"),
- "title" : "MongoDB 教程",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "菜鸟教程",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "database",
- "NoSQL"
- ],
- "likes" : 100
- }
- OR
- >db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
- {
- "_id" : ObjectId("56063f17ade2f21f36b03133"),
- "title" : "MongoDB 教程",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "菜鸟教程",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "database",
- "NoSQL"
- ],
- "likes" : 100
- }
- >
- AND结合OR
- >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
- {
- "_id" : ObjectId("56063f17ade2f21f36b03133"),
- "title" : "MongoDB 教程",
- "description" : "MongoDB 是一个 Nosql 数据库",
- "by" : "菜鸟教程",
- "url" : "http://www.runoob.com",
- "tags" : [
- "mongodb",
- "database",
- "NoSQL"
- ],
- "likes" : 100
- }
[React] 04 - Intro: mongoDB becomes popular的更多相关文章
- GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频)
GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频) GraphQL + React Apoll ...
- Ubuntu16.04安装mongodb
Ubuntu16.04安装mongodb copy from: http://blog.csdn.net/zhushh/article/details/52451441 1.导入软件源的公钥 sudo ...
- Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- Ubuntu 18.04安装MongoDB 4.0(社区版)
Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...
- Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 说在前面的话 首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...
- Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...
- Ubuntu14.04下Mongodb的Java API编程实例(手动项目或者maven项目)
不多说,直接上干货! 若大家,不会安装的话,则请移步,随便挑选一种. Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04 ...
- Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
- Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
随机推荐
- 【熊掌号mip插件】织梦DEDECMS百度熊掌号mip改造教程
第一部分:模板修改 1.js部分:删除或使用现有组件替换 2.调用百度mip文件: head里加<link rel="stylesheet" type="text/ ...
- 关闭Ubuntu桌面版GUI
个人用于实验的Ubuntu虚拟机不需要GUI,且要复制多个,但是又懒得重新装个Ubuntu,打算把现有的带桌面的直接装好克隆起来用,但是多个GUI一起开电脑吃不消,思前想后找了下关闭GUI的方法如下: ...
- Compile SQLite3 from individual files
下载非Amalgamation SQLite3源码 安装tcl, apt-get instal tcl 解压 mkdir build cd build ../configure make #make ...
- 机器学习笔记(6):多类逻辑回归-使用gluon
上一篇演示了纯手动添加隐藏层,这次使用gluon让代码更精减,代码来自:https://zh.gluon.ai/chapter_supervised-learning/mlp-gluon.html f ...
- FXAA,FSAA与MSAA有什么区别?效果和性能上哪个好
而MSAA基本上只对画面中物体的边缘进行放大.混合的抗锯操作,因为边缘是锯齿最明显的地方(注意不是所有的边缘).提取边缘,主要是结合深度技术.MSAA是种硬件AA.我们一般说的4x.8x,就是放大倍数 ...
- Linux之路,起步虽晚,迈步才会成功(2013.08.09)
工作太忙,很久没写文章了.以前基本没有接触过,但是基于现在工作的状态,对于linux这种博大精深的东西,速成是没有可能的,只能积累,起步虽晚,迈步才会成功,以此勉励自己.
- Asp.net Core中使用Redis 来保存Session, 读取配置文件
今天 无意看到Asp.net Core中使用Session ,首先要使用Session就必须添加Microsoft.AspNetCore.Session包,默认Session是只能存去字节,所以如果你 ...
- js处理时间时区问题
问题背景:服务器时间是东八区时间,页面会在全世界各地,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间 一.基本概念 1.格林威治时间 格林威治 ...
- 启动exe
public void OpenTabTip(){ bool bt = true; Process[] processes = Process.GetProcesses(); for ...
- jdbctemplate 获取数据表结构的方法&注意事项
方法一 直接查询: SqlRowSet srcSqlRowSet = srcJdbcTemplate.queryForRowSet("SELECT * FROM tablename LIMI ...