程式狂想筆記

一個攻城師奮鬥史

0%

MonogoDB 操作使用小記

最近專案有用到這個
有看到使用Robo 3T
但對這一塊不是很了解
這邊主要是紀錄如何操作 MonogoDB
不會記載 MonogoDB 詳細知識

有哪幾種 NoSQL?(4 種)

  • Key-value store
    ex: BigTable、Hadoop
  • Document store
    ex: MongoDB
  • Graph
    ex: Neo4J
  • 列存儲(Wide Column Store/Column-Family)資料庫(記憶體資料庫是知名網站慣用快取工具)
    ex: Memcached、Redis、Velocity

快速認識 4 類主流 NoSQL 資料庫 | iThome

簡單架設 MonogoDB

docker 架設

參考裡面 docker-compose.yml

vagrant

homestead 可以架設

或者比較單純Vagrant box benson/mongodb - Vagrant CloudUpdate to Mongo v3 · Issue #5 · bobthecow/vagrant-mongobox

操作使用

local,config,admin databases

預設安裝完會看到有三個 database
local,config,admin 三個 database 建議不要去動他

admin and local contain various settings local to the server, like users who are authenticated to connect. Under beginner usage, you shouldn’t need to worry about them at all. By default you connect to a database named test. To connect to a new database, just use databasename from the mongo command line, or mongo databasename from your OS shell.
use [database_name] and then show collections
The db object is your root handle to the currently-selected database on the mongo commmand line. The command line is really just a Javascript command line, and there are various mongodb-specific objects and functions exposed that let you do stuff. Try help() for a full listing.

Some beginner’s questions about MongoDB - Stack Overflow
MongoDB 管理:慎用 local、admin 数据库 | MongoDB 中文社区

mysql <=> mongodb

MySQL MongoDB
Table <==> Collection
Row <=> Document
Column <=> Field

MongoDB and MySQL Compared | MongoDB

操作使用

創建資料庫

use DATABASE_NAME

如果資料庫不存在,則創建資料庫,否則切換到指定資料庫。

刪除資料庫

db.dropDatabase()

刪除所在的 Database

创建集合(Collection)

db.createCollection(name, options)

db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 }
創建固定集合 mycol,整個集合空間大小 6142800 KB, 文檔最大個數為 10000 個。

插入文件(Document)

db.COLLECTION_NAME.insert(document)

1
2
3
4
5
6
7
8
db.col.insert({
title: "MongoDB 教程",
description: "MongoDB 是一個 Nosql 數據庫",
by: "菜鳥教程",
url: "http://www.runoob.com",
tags: ["mongodb", "database", "NoSQL"],
likes: 100
});

查詢集合

db.col.find()

刪除文件

1
2
3
4
db.collection.remove(
<query>,
<justOne>
)

MongoDB 刪除文檔 | 菜鳥教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
remove() 方法已經過時了,現在官方推薦使用 deleteOne() 和 deleteMany() 方法。

如刪除集合下全部文檔:

db.inventory.deleteMany({})

刪除 status 等於 A 的全部文檔:

db.inventory.deleteMany({ status : "A" })

刪除 status 等於 D 的一個文檔:

db.inventory.deleteOne( { status: "D" } )

三國電視台

三國電視台

tre***3@126.com
2年前 (2017-09-22)

sairre

jsa***e@163.com

remove() 方法 並不會真正釋放空間。

需要繼續執行 db.repairDatabase() 來回收磁盤空間。

> db.repairDatabase()
或者
> db.runCommand({ repairDatabase: 1 })

修改文件

1
2
3
4
5
6
7
8
9
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
1
2
3
4
在3.2版本开始,MongoDB提供以下更新集合文档的方法:

db.collection.updateOne() 向指定集合更新单个文档
db.collection.updateMany() 向指定集合更新多个文档

更多內容可看MongoDB 教程 | 菜鸟教程
由於裡面教學應該是 2.x 版
可以看評論裡面補充很多東西

Robo 3T 操作 MongoDB

MongoDB 可视化工具–Robo 3T 使用教程 - 龙恩 0707 - 博客园
adminMongo

刪除資料 OR 篩選資料 的問題

「乾貨」mongoDB 釋放磁碟占用 - 每日頭條
目前專案裡面放的資料好像不會去做刪除或者撈出來資料不會做篩選
不知道是不是非常耗效能關係??