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

安装:
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的更多相关文章

  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. tableview 选中一行后,不显示选中颜色

    tableview 选中一行后,不显示选中颜色 千万不要将tableview的allowsSelection设置成NO,那样的话可能导致tableview不能响应点击动作. 应该使用:cell.sel ...

  2. linux和CentOS下网卡启动、配置等ifcfg-eth0教程(转自)

    转自:http://www.itokit.com/2012/0415/73593.html it 动力总结系统安装好后,通过以下二个步骤就可以让你的系统正常上网(大多正常情况下).步骤1.配置/etc ...

  3. ffmpeg for iOS

    链接: ios ffmpeg 实时视频压缩(主要是H264) 最简单的基于FFmpeg的移动端例子:IOS 视频转码器 iOS下使用FFMPEG的一些总结 iOS配置FFmpeg框架 iOS上使用高大 ...

  4. Linux下刷新DNS缓存(Ubuntu/CentOS)

    现在很多Linux发行版都没有内置DNS本地缓存,Linux不像Windows那样可以使用ipconfig /flushdns来刷新,在Linux下无需刷新,因为本身没有缓存: 当然,如果非要缓存刷新 ...

  5. 让.Net程序支持命令行启动

    很多时候,我们需要让程序支持命令行启动,这个时候则需要一个命令行解析器,由于.Net BCL并没有内置命令行解析库,因此需要我们自己实现一个.对于简单的参数来说,自己写一个字符串比较函数来分析args ...

  6. 【2013Esri全球用户大会精彩案例】GIS for Philadelphia’s Finest --费城警用GIS

     行业领域:警务   拥有6000多警员和侦探的费城警察局,历时三年,搭建了费城警用GIS,目前可以对每天发生的事进行汇总(如图1),并可动态的进行热点分析(如图2).区域指挥官可方便的查看警员的活动 ...

  7. windows域控里,属性和字段映射表

    string[] prop = new string[] { "DisplayName", "SamAccountName", "UserPrinci ...

  8. raw_socket(原始套接字)以及普通socket使用终极总结

      一.传输层socket(四层socket,普通socket) 可参考本人以下博客: Windows Socket编程之UDP实现大文件的传输:http://blog.csdn.net/luchen ...

  9. [数据结构与算法分析(Mark Allen Weiss)]不相交集 @ Python

    最简单的不相交集的实现,来自MAW的<数据结构与算法分析>. 代码: class DisjSet: def __init__(self, NumSets): self.S = [0 for ...

  10. yum离线安装rpm包

    CentOS利用yum下载好rpm包,并离线安装   1.联网安装好rpm包,并将下载好的包备好 #yum install --downloadonly --downloaddir=/home/sam ...