Ref: Linux平台安装MongoDB - 菜鸟教程

  1. 安装:
    sudo apt-get install mongodb

  2. 安装完毕产生:
  3. ls /etc/init.d/mongodb
  4.  
  5. 配置:
    vim /etc/mongod.conf
  6.  
  7. 卸载:
    sudo apt-get --purge remove mongodb mongodb-clients mongodb-server

Ubuntu 14.14的版本有点老,还是下载安装新版本吧。


1. 默认数据文件夹在/data/db。

2. 先启动服务。

  1. $ ./mongod
  2. --25T16::50.549+ I JOURNAL [initandlisten] journal dir=/data/db/journal
  3. --25T16::50.550+ I JOURNAL [initandlisten] recover : no journal files present, no recovery needed
  4. --25T16::50.869+ I JOURNAL [initandlisten] preallocateIsFaster=true 3.16
  5. --25T16::51.206+ I JOURNAL [initandlisten] preallocateIsFaster=true 3.52
  6. --25T16::52.775+ I JOURNAL [initandlisten] preallocateIsFaster=true 7.7

3. MongoDB后台管理 Shell。

  1. $ cd /usr/local/mongodb/bin
  2. $ ./mongo
  3. MongoDB shell version: 3.0.
  4. connecting to: test
  5. Welcome to the MongoDB shell.
  6. ……

4. 或者,MongoDB Compass 图形界面管理工具。

5. 检查 MongoDB 是否成功启动

  1. ps -ef | grep mongod
  2.  
  3. sudo service mongod stop // 关闭
    sudo service mongod restart // 重新启动

来源于:Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)


举一个例子:

From: https://github.com/yinxin630/fiora/blob/master/server/main.js

  1. const mongoose = require('mongoose');
  2. const fs = require('fs');
  3. const path = require('path');
  4.  
  5. const app = require('./app');
  6. const config = require('../config/server');
  7. const checkVersion = require('../build/check-versions');
  8.  
  9. const Socket = require('./models/socket');
  10. const Group = require('./models/group');
  11. const getRandomAvatar = require('../utils/getRandomAvatar');

  12. mongoose.Promise = Promise;  // ---->
  13. checkVersion();
  14.  
  15. function createDirectory(directoryPath) {
  16. if (!fs.existsSync(directoryPath)) {
  17. fs.mkdirSync(directoryPath);
  18. }
  19. }
  20.  
  21. mongoose.connect(config.database, async (err) => {
  22. if (err) {
  23. console.error('connect database error!');
  24. console.error(err);
  25. return process.exit(1);
  26. }
  27.  
  28. const group = await Group.findOne({ isDefault: true });
  29. if (!group) {
  30. const defaultGroup = await Group.create({
  31. name: 'fiora',
  32. avatar: getRandomAvatar(),
  33. announcement: '欢迎光临Fiora, 这是一个开源/自由的聊天室',
  34. isDefault: true,
  35. });
  36. if (!defaultGroup) {
  37. console.error('create default group fail');
  38. return process.exit(1);
  39. }
  40. }
  41.  
  42. createDirectory(path.join(__dirname, '../public'));
  43.  
  44. app.listen(config.port, async () => {
  45. await Socket.remove({});
  46. console.log(` >>> server listen on http://localhost:${config.port}`);
  47. });
  48. });

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 - 连接

命令行模式

  1. > mongodb://admin:123456@localhost/
  2.  
  3. > mongodb://admin:123456@localhost/test

更多实例见原链接。

Ref: MongoDB 创建数据库

  1. > use runoob
  2. switched to db runoob
  3. > db
  4. runoob  // 当前表,有点git的branch的意思
  5. >
  6. // 然后掺入一些数据才能够show显示出
  7. > db.runoob.insert({"name":"菜鸟教程"})
  8. WriteResult({ "nInserted" : 1 })
  9. > show dbs
  10. local 0.078GB
  11. runoob 0.078GB
  12. test 0.078GB
  13. >

Ref: MongoDB 创建集合

  1. > use test
  2. switched to db test
  3. > db.createCollection("runoob")
  4. { "ok" : 1 }
  5. >
  6.  
  7. > show collections
  8. runoob
  9. system.indexes

Ref: MongoDB 插入文档

BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

该“表”(集合)插入一行,并查看插入内容。【col是collection的意思】

  1. >db.col.insert({title: 'MongoDB 教程',
  2. description: 'MongoDB 是一个 Nosql 数据库',
  3. by: '菜鸟教程',
  4. url: 'http://www.runoob.com',
  5. tags: ['mongodb', 'database', 'NoSQL'],
  6. likes: 100
  7. })
  1. > db.col.find()
  2. { "_id" : ObjectId("56064886ade2f21f36b03134"),
  3.  
  4.   "title" : "MongoDB 教程",
      "description" : "MongoDB 是一个 Nosql 数据库",
      "by" : "菜鸟教程",
      "url" : "http://www.runoob.com",
      "tags" : [ "mongodb", "database", "NoSQL" ],
      "likes" : 100 }
  5. > 

或者,定义为一个变量后,再插入。

  1. > document=({title: 'MongoDB 教程',
  2. description: 'MongoDB 是一个 Nosql 数据库',
  3. by: '菜鸟教程',
  4. url: 'http://www.runoob.com',
  5. tags: ['mongodb', 'database', 'NoSQL'],
  6. likes: 100
  7. });
  8.  
  9. > db.col.insert(document)
  10. WriteResult({ "nInserted" : 1 })
  11. >

Ref: MongoDB 更新文档

通过 update() 方法来更新标题(title)。

  1. >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
  2. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
  3. > db.col.find().pretty()
  4. {
  5. "_id" : ObjectId("56064f89ade2f21f36b03136"),
  6. "title" : "MongoDB",
  7. "description" : "MongoDB 是一个 Nosql 数据库",
  8. "by" : "菜鸟教程",
  9. "url" : "http://www.runoob.com",
  10. "tags" : [
  11. "mongodb",
  12. "database",
  13. "NoSQL"
  14. ],
  15. "likes" : 100
  16. }
  17. >

如果要修改多条相同的文档,则需要设置 multi 参数为 true。

  1. >db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) 

或者,通过save方法,直接替换掉这一行(document)

  1. >db.col.save({
  2. "_id" : ObjectId("56064f89ade2f21f36b03136"),
  3. "title" : "MongoDB",
  4. "description" : "MongoDB 是一个 Nosql 数据库",
  5. "by" : "Runoob",
  6. "url" : "http://www.runoob.com",
  7. "tags" : [
  8. "mongodb",
  9. "NoSQL"
  10. ],
  11. "likes" : 110
  12. })

Ref: MongoDB 查询文档

单个键值:

以易读的方式来读取数据,可以使用 pretty() 方法。

  1. > db.col.find().pretty()
  2. {
  3. "_id" : ObjectId("56063f17ade2f21f36b03133"),
  4. "title" : "MongoDB 教程",
  5. "description" : "MongoDB 是一个 Nosql 数据库",
  6. "by" : "菜鸟教程",
  7. "url" : "http://www.runoob.com",
  8. "tags" : [
  9. "mongodb",
  10. "database",
  11. "NoSQL"
  12. ],
  13. "likes" : 100
  14. }

对应关系,帮助理解。

操作 格式 范例 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
  1. > db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
  2. {
  3. "_id" : ObjectId("56063f17ade2f21f36b03133"),
  4. "title" : "MongoDB 教程",
  5. "description" : "MongoDB 是一个 Nosql 数据库",
  6. "by" : "菜鸟教程",
  7. "url" : "http://www.runoob.com",
  8. "tags" : [
  9. "mongodb",
  10. "database",
  11. "NoSQL"
  12. ],
  13. "likes" : 100
  14. }
  • OR
  1. >db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
  2. {
  3. "_id" : ObjectId("56063f17ade2f21f36b03133"),
  4. "title" : "MongoDB 教程",
  5. "description" : "MongoDB 是一个 Nosql 数据库",
  6. "by" : "菜鸟教程",
  7. "url" : "http://www.runoob.com",
  8. "tags" : [
  9. "mongodb",
  10. "database",
  11. "NoSQL"
  12. ],
  13. "likes" : 100
  14. }
  15. >
  • AND结合OR
  1. >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
  2. {
  3. "_id" : ObjectId("56063f17ade2f21f36b03133"),
  4. "title" : "MongoDB 教程",
  5. "description" : "MongoDB 是一个 Nosql 数据库",
  6. "by" : "菜鸟教程",
  7. "url" : "http://www.runoob.com",
  8. "tags" : [
  9. "mongodb",
  10. "database",
  11. "NoSQL"
  12. ],
  13. "likes" : 100
  14. }

[React] 04 - Intro: mongoDB becomes popular的更多相关文章

  1. GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频)

    GraphQL + React Apollo + React Hook + Express + Mongodb 大型前后端分离项目实战之后端(19 个视频) GraphQL + React Apoll ...

  2. Ubuntu16.04安装mongodb

    Ubuntu16.04安装mongodb copy from: http://blog.csdn.net/zhushh/article/details/52451441 1.导入软件源的公钥 sudo ...

  3. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  4. Ubuntu 18.04安装MongoDB 4.0(社区版)

    Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...

  5. Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  6. Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...

  7. Ubuntu14.04下Mongodb的Java API编程实例(手动项目或者maven项目)

    不多说,直接上干货! 若大家,不会安装的话,则请移步,随便挑选一种. Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04 ...

  8. Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

  9. Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

随机推荐

  1. 【熊掌号mip插件】织梦DEDECMS百度熊掌号mip改造教程

    第一部分:模板修改 1.js部分:删除或使用现有组件替换 2.调用百度mip文件: head里加<link rel="stylesheet" type="text/ ...

  2. 关闭Ubuntu桌面版GUI

    个人用于实验的Ubuntu虚拟机不需要GUI,且要复制多个,但是又懒得重新装个Ubuntu,打算把现有的带桌面的直接装好克隆起来用,但是多个GUI一起开电脑吃不消,思前想后找了下关闭GUI的方法如下: ...

  3. Compile SQLite3 from individual files

    下载非Amalgamation SQLite3源码 安装tcl, apt-get instal tcl 解压 mkdir build cd build ../configure make #make ...

  4. 机器学习笔记(6):多类逻辑回归-使用gluon

    上一篇演示了纯手动添加隐藏层,这次使用gluon让代码更精减,代码来自:https://zh.gluon.ai/chapter_supervised-learning/mlp-gluon.html f ...

  5. FXAA,FSAA与MSAA有什么区别?效果和性能上哪个好

    而MSAA基本上只对画面中物体的边缘进行放大.混合的抗锯操作,因为边缘是锯齿最明显的地方(注意不是所有的边缘).提取边缘,主要是结合深度技术.MSAA是种硬件AA.我们一般说的4x.8x,就是放大倍数 ...

  6. Linux之路,起步虽晚,迈步才会成功(2013.08.09)

    工作太忙,很久没写文章了.以前基本没有接触过,但是基于现在工作的状态,对于linux这种博大精深的东西,速成是没有可能的,只能积累,起步虽晚,迈步才会成功,以此勉励自己.

  7. Asp.net Core中使用Redis 来保存Session, 读取配置文件

    今天 无意看到Asp.net Core中使用Session ,首先要使用Session就必须添加Microsoft.AspNetCore.Session包,默认Session是只能存去字节,所以如果你 ...

  8. js处理时间时区问题

    问题背景:服务器时间是东八区时间,页面会在全世界各地,页面 JS 功能需要对比服务器时间和用户本地时间,为兼容世界各地时间,需要将用户本地时间转换为东八区时间 一.基本概念 1.格林威治时间 格林威治 ...

  9. 启动exe

    public void OpenTabTip(){    bool bt = true;    Process[] processes = Process.GetProcesses();    for ...

  10. jdbctemplate 获取数据表结构的方法&注意事项

    方法一 直接查询: SqlRowSet srcSqlRowSet = srcJdbcTemplate.queryForRowSet("SELECT * FROM tablename LIMI ...