摘要:既是數(shù)據(jù)庫,又是內(nèi)存數(shù)據(jù)庫,而且它是現(xiàn)在最強(qiáng)大最流行的數(shù)據(jù)庫。所以相對于的真內(nèi)存數(shù)據(jù)庫而言,只是將大部分的操作數(shù)據(jù)存在內(nèi)存中。
MongoDB既是NoSQL數(shù)據(jù)庫,又是內(nèi)存數(shù)據(jù)庫,而且它是現(xiàn)在最強(qiáng)大、最流行的NoSQL數(shù)據(jù)庫。區(qū)別與別的NoSQL數(shù)據(jù)庫,MongoDB主要是基于Documents文檔(即一條JSON數(shù)據(jù))的。
MongoDB的特點:
NoSQL數(shù)據(jù)庫
內(nèi)存數(shù)據(jù)庫
存儲基于JSON或BSON
支持豐富的高級查詢
命令基于Javascript語法
對數(shù)據(jù)之間關(guān)系的支持比較弱
支持map-reduce的運(yùn)算框架
支持GirdFS的分布式文件系統(tǒng)
MongoDB持久化MongoDB雖然是內(nèi)存數(shù)據(jù)庫,但是它主要是將數(shù)據(jù)存儲在硬盤的,所有要操作的數(shù)據(jù)通過mmap的方式映射到內(nèi)存某個區(qū)域內(nèi)。所以相對于Redis的真·內(nèi)存數(shù)據(jù)庫而言,MongoDB只是將大部分的操作數(shù)據(jù)存在內(nèi)存中。
Mac中,Mongodb的數(shù)據(jù)存儲位置默認(rèn)為:/usr/local/var/mongodb。
里面名稱類似collection-4-3122184014923990948.wt即為一個collection。
Ubuntu安裝:
$ sudo apt-get install mongodb-org
Mac安裝:
$ brew install mongodb # 啟動mongodb服務(wù) $ brew services start mongodb #或前端啟動 $ mongod --config /usr/local/etc/mongod.conf配置
MongoDB的配置文件在/etc/mongod.conf。
常用的配置項有:
# 默認(rèn)端口27107 # 日志位置 /var/log/mongodb/mongod.logMongo Shell (Javascript)
當(dāng)我們進(jìn)入MongoDB客戶端后,實際上是進(jìn)入了一個類Javascript語言的Shell交互環(huán)境。
也就是說,MongoDB中的很多命令,尤其是包括定義函數(shù)等高級命令,實際上都是Javascript語言。
了解了這點,一些高級命令如Aggregation學(xué)起來就會放松很多。
# 服務(wù)端啟動 $ mongod /etc/mongod.conf # 服務(wù)端啟停 (Ubuntu上) $ sudo service mongod start $ sudo service mongod stop $ sudo service mongod restart # 進(jìn)入客戶端 mongo
進(jìn)入mongo客戶端后,就進(jìn)入了shell交互頁面了。
常用的命令如下(注意mongodb區(qū)分大小寫):
# 顯示當(dāng)前數(shù)據(jù)庫 db # 顯示所有數(shù)據(jù)庫 show databases # 或 show dbs # 切換數(shù)據(jù)庫 use 數(shù)據(jù)庫名 # 刪除當(dāng)前數(shù)據(jù)庫 db.dropDatabase()集合
首先要記住,
MongoDB中,有這么幾個概念:
Database 數(shù)據(jù)庫:即一個NoSQL的非關(guān)系型數(shù)據(jù)庫
Collection 集合: 即代替?zhèn)鹘y(tǒng)"表格"概念的一個集合,收集性質(zhì)相似的一些數(shù)據(jù),如員工集合,或產(chǎn)品集合。
Document 文檔: 即一個標(biāo)準(zhǔn)JSON格式數(shù)據(jù)。相當(dāng)于傳統(tǒng)數(shù)據(jù)庫的一行record數(shù)據(jù)。
在關(guān)系數(shù)據(jù)庫中,是以表為一個數(shù)據(jù)集。而MongoDB中,是以Collection為一個數(shù)據(jù)集:
其中每一個配有_id的記錄,就是一個Document文檔。相當(dāng)于一條記錄。
可以看出,MongoDB對數(shù)據(jù)之間事務(wù)關(guān)系支持比較弱,如果業(yè)務(wù)這一方面要求比較高的話,MongoDB還是并不適合此類型的應(yīng)用。
創(chuàng)建集合:不用手動創(chuàng)建集合,當(dāng)?shù)谝粭l數(shù)據(jù)插入時,集合自動就生成了。當(dāng)然,手動創(chuàng)建也是可以的:
db.createCollection( "集合名", {各種屬性設(shè)置} ) # 如 (capped表示是否設(shè)置容量上限) db.createCollection( "Products", {capped: true, size: 1000} ) # 查看所有集合 show collections # 刪除集合 db.集合名稱.drop()數(shù)據(jù)類型
在MongoDB中的一個Document,即一個JSON格式的文檔中,每個值都是要指定數(shù)據(jù)類型的。
現(xiàn)有數(shù)據(jù)類型如下:
Object ID:文檔ID,相當(dāng)于傳統(tǒng)表中的表主鍵ID。
可以自己創(chuàng)建
如果自己不設(shè)置,MongoDB會自動生成一個名為_id的"主鍵"
String
Boolean
Integer
Double
Array:列表,可以存儲多個值。
Object:可以嵌套另一個子Document文檔,或說JSON數(shù)據(jù)。
Timestamp
Date
Null
數(shù)據(jù)操作# 插入數(shù)據(jù) db.集合名稱.insert( {數(shù)據(jù)} ) # 如 db.mycollection1.insert( {"name": "Jason", "age": 18} ) # 或 db.mycollection1.insert( {name: "Jason", age: 18} ) # 顯示集合中所有數(shù)據(jù) db.集合名.find() # 修改數(shù)據(jù) (如果不存在對應(yīng)的ID,則創(chuàng)建一條新數(shù)據(jù)) db.集合名.save( {"_id": "ID號", 數(shù)據(jù)} ) # 更新單條數(shù)據(jù) db.集合名.update( {查詢條件}, {更新項目} ) # 如 db.mycollection1.update( {name:"Jason"}, {age:30} ) # 或 db.mycollection1.update( {name:"Jason"}, { $set:{age:30} } ) # 更新多條數(shù)據(jù) (使用"multi"選項) db.mycollection1.update( {job: "HR"}, {salary: 8000}, {multi: true} ) # 刪除單條數(shù)據(jù) db.mycollection1.remove( {查詢}, {justOne: true} ) # 刪除多條數(shù)據(jù) ("justOne"選項默認(rèn)為false) db.mycollection1.remove( {查詢} )MongoDB數(shù)據(jù)備份和恢復(fù)
注意:MongoDB導(dǎo)出時候不是單文件,而是巨多JSON和BSON文件。
# 備份 $ mongodump -h 主機(jī)IP:端口 -d 數(shù)據(jù)庫名 -o 導(dǎo)出路徑 # 如 $ mongodump -h 192.168.1.101:27017 -d mydb1 -o /var/db/mongodb/ # 從本機(jī)恢復(fù) $ mongorestore -d mydb1 --dir /var/db/mongodb/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19453.html
摘要:是一個輕量級框架,可以完成基于的應(yīng)用程序的大部分配置工作。本文介紹如何使用操作,通過代碼在里插入數(shù)據(jù)。首先按照這個教程的第一篇文章的介紹,在本地搭建好的環(huán)境最簡單的入門教程之一環(huán)境搭建。 Spring Boot 是一個輕量級框架,可以完成基于 Spring 的應(yīng)用程序的大部分配置工作。Spring Boot的目的是提供一組工具,以便快速構(gòu)建容易配置的Spring應(yīng)用程序,省去大量傳統(tǒng)S...
摘要:通過在文檔中嵌入文檔和數(shù)組面向文檔的方法能夠僅使用一條記錄來表現(xiàn)復(fù)雜的層次關(guān)系這與使用現(xiàn)代面向?qū)ο笳Z言的開發(fā)者對數(shù)據(jù)的看法一致。在模式下會限制輸出信息數(shù)據(jù)庫命令輸出,副本集活動,連接接受事件,連接關(guān)閉事件。指定一個文件或。 預(yù)熱看我之前的文章Node學(xué)習(xí)記錄: mongodb 這個系列旨在系統(tǒng)的學(xué)習(xí)Mongodb 使用windows的同學(xué)可以看這篇文章MongoDB開發(fā)學(xué)習(xí) 學(xué)習(xí)目標(biāo) ...
摘要:通過前面四篇的學(xué)習(xí),我們已經(jīng)在本地安裝了一個數(shù)據(jù)庫,并且通過一個簡單的應(yīng)用的單元測試,插入了幾條記錄到中,并通過查看到了插入的數(shù)據(jù)。讀操作最終將會使用我們在最簡單的入門教程之三使用代碼往里插入數(shù)據(jù)里介紹的方法,即通過注入的實例完成對的操作。 通過前面四篇的學(xué)習(xí),我們已經(jīng)在本地安裝了一個MongoDB數(shù)據(jù)庫,并且通過一個簡單的Spring boot應(yīng)用的單元測試,插入了幾條記錄到Mong...
閱讀 870·2021-11-18 10:02
閱讀 1670·2019-08-30 15:56
閱讀 2570·2019-08-30 13:47
閱讀 2639·2019-08-29 12:43
閱讀 851·2019-08-29 11:19
閱讀 1783·2019-08-28 18:23
閱讀 2669·2019-08-26 12:23
閱讀 3007·2019-08-23 15:29