ongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。 |
1.下載Linux安裝包
如下圖,放到本地的某個角落,要記得位置哦~
2.連接你的服務器
ssh root@你的IP //回車輸入密碼
3.安裝包上傳
另開ssh窗口(command+n),如果是windows就打開新的cmd窗口,因為我們要操作本地文件,之前的窗口我們已經登了服務器了。傳的方法很多,我只演示其中一種。
cd "安裝包所在文件夾" // 去你剛才安裝包放的位置
scp "本地文件" root@你的IP // 回車輸入密碼開始傳送
如下圖,我是傳送到服務器的根目錄下。其實不建議,你可以放在一個固有目錄,比如/usr/local
ls -l //以列表的形式展開,我們可以看到已經下載成功了。
4.解壓安裝包
tar -zxvf mongodb-linux-x86_64-3.4.6.tgz //解壓 不同文件有不同的解壓命令,自己百度即可
5.填坑的一步
剛才說大家可以把每次安裝的東東放到固定的文件夾,所以我把解壓好的文件移到了 /usr/local/mongodb目錄了,如果你已經放到了你喜歡的位置,可以跳過此步驟。如果你不知道怎么移,可以看下。
cd /user/local //進入local
mkdir mongodb //創建mongodb文件夾
cd / //進入根目錄
mv mongodb-linux-x86_64-3.4.6 /usr/local/mongodb /*將剛才的解壓包移入 /usr/local/mongodb*/
6.配置mongodb運行環境
mkdir data //創建data文件夾,存放數據庫db文件
mkdir logs //創建logs文件夾,存放日志文件
cd logs //進入logs
touch mongo.log //創建log文件
cd .. //返回上一級
mkdir etc //創建配置文件夾
cd etc // 進入etc
vim mongo.conf //編輯同時創建mongo.conf 文件
以下是mongo.conf文件里的代碼,大家看好不要寫錯,進入文件之后要按一下鍵盤i才能開始編寫代碼。
dbpath=/usr/local/mongodb/data //路徑一定要輸入絕對的
logpath=/usr/local/mongodb/logs/mongo.log //路徑一定要輸入絕對的
logappend=true
journal=true
quiet=true
port=27017 //端口
寫好了按esc鍵退出,然后按shift+:會在最下面出現:然后輸入wq,保存并退出的意思。
到了這一步就接近尾聲了。
7.啟動mongodb
cd mongodb/mongodb-linux-x86_64-3.4.6/bin //進入安裝包的bin目錄下
mongod -f /usr/local/mongodb/etc/mongo.conf //啟動1方法 或 ./mongod -f /usr/local/mongodb/etc/mongo.conf //啟動2方法
如果輸入這個命令,出現如下圖,沒什么變化,只有光標閃爍。
8.本地測試是否成功
我用的可視化工具 Robo 3t,新建鏈接,address輸入服務器地址,端口填你mongo.conf里配置的,基本都是27027。
點擊保存,如下圖操作,進行 Connect。
如果到了這一步基本就是成功啦。
9.小坑警示
我之前在mongo.conf 里 路徑寫的是相對的,就出現了下面的問題。
然后就是這樣子的。
10.總結
方法有很多,我寫的只是其中一種,自己也是第一次安裝。其中也有點坑坑,遇到問題不要認輸,總會解決的,寫的不對不好的地方,希望大家不吝賜教~
本文地址:https://www.linuxprobe.com/linux-mongodb.html
MongoDB 是一個基于分布式文件存儲的數據庫,由 C++ 語言編寫,旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。 MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。
MongoDB 的單個實例可以容納多個獨立的數據庫,每個數據庫都有自己的集合和權限。 數據庫通過名字來標識;數據庫名為 UTF-8 字符串,需滿足以下條件:
內置數據庫:
文檔是一組鍵值(key-value)對(即 BSON)。MongoDB 的文檔不需要設置相同的字段,并且相同的字段不需要相同的數據類型,這與關系型數據庫有很大的區別,也是 MongoDB 非常突出的特點。一個簡單的文檔例子如下:
{"name":"李白", "age":30}
文檔有如下特性:
文檔鍵命名規范:
集合就是文檔組,類似于關系數據庫中的表。集合沒有固定的結構,可以插入不同格式和類型的數據,但通常情況下我們插入集合的數據都會有一定的關聯性。 比如,我們可以將以下不同數據結構的文檔插入到同一集合中:
{"name":"杜甫", "age":29}
{"name":"李白", "age":30}
{"name":"白居易", "age":31, "height":175}
集合名的命名規范:
Capped collections 是固定大小的集合,當達到最大值時,它會自動覆蓋最早的文檔。和標準的集合不同,你必須要顯式的創建一個 capped collection,指定一個集合的大小,單位是字節。固定集合的數據存儲空間值提前分配的。固定集合不能刪除一個文檔,可以使用 drop() 方法刪除整個集合。
RDBMS 術語/概念 | MongoDB 術語/概念 | 解釋/說明 |
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
table joins | $lookup | |
primary key | primary key | 主鍵,MongoDB 自動將 _id 字段設置為主鍵 |
transaction | transaction | |
group by | aggregation |
在k8s里面部署mongodb副本集
git clone https://github.com/mongodb/mongodb-enterprise-kubernetes.git
kubectl create namespace mongodb
kubectl apply -f crds.yaml -n namespace
kubectl apply -f mongodb-enterprise.yaml -n namespace
A Project object is a Kubernetes ConfigMap that points to an Ops Manager installation and a Project. This ConfigMap has the following structure:
$ cat my-project.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: my-project
namespace: mongodb
data:
projectName: myProjectName # this is an optional parameter
orgId: 5b890e0feacf0b76ff3e7183 # this is an optional parameter
baseUrl: https://my-ops-manager-or-cloud-manager-url
Apply this file to create the new Project:
kubectl apply -f my-project.yaml -n middleware
kubectl -n mongodb create secret generic my-credentials --from-literal="user=my-public-api-key" --from-literal="publicApiKey=my-private-api-key" -n middleware
kubectl apply -f samples/mongodb/minimal/replica-set.yaml -n mongodb
kubectl create secret generic ops-manager-admin-secret --from-literal=Username="user.name@example.com" --from-literal=Password="Passw0rd." --from-literal=FirstName="User" --from-literal=LastName="Name" -n <namespace>
kubectl apply -f samples/ops-manager/ops-manager-external.yaml -n <namespace>
為了從 Kubernetes 集群外部訪問 Ops Manager UI,您必須在 Ops Manager 資源定義中啟用 spec.externalConnectivity。最簡單的方法是配置 LoadBalancer 服務類型。
您將能夠從 Operator 創建的 Service 對象中獲取用于連接到 Ops Manager UI 的 URL。
訪問http//:{節點ip}:31147
用戶名和密碼是前面創建的
MongoDB Connection String:
mongodb://redacted-credentials@ops-manager-external-db-0.ops-manager-external-db-svc.middleware.svc.cluster.local:27017,ops-manager-external-db-1.ops-manager-external-db-svc.middleware.svc.cluster.local:27017,ops-manager-external-db-2.ops-manager-external-db-svc.middleware.svc.cluster.local:27017/?authMechanism=SCRAM-SHA-256&authSource=admin&connectTimeoutMS=20000&replicaSet=ops-manager-external-db&serverSelectionTimeoutMS=20000
用mongo compass客戶端工具測試,可以登錄
所周知,NodeJS是一個基于Chrome V8 JavaScript引擎的運行時環境,用于服務器端和網絡應用程序。并且它是支持跨平臺的開放資源。NodeJS應用程序用純JavaScript編寫。
使用Node JS上傳文件或圖像到服務器
背景
幾年前,如果你需要上傳任何文件或圖像到服務器,那么你得完全依賴于服務器端語言如C#和PHP。在JS革命之后,一切都改變了。今天我將告訴你如何使用NodeJS上傳文件到服務器,甚至不需要寫一行服務器端代碼。希望你會喜歡。
創建空白的Node JS Web應用程序
在package.json中設置依賴關系
開始之前,我們首先要設置我們的依賴關系。為此,請打開package.json文件并粘貼代碼。
{ "name": "node_js_file_upload", "version": "0.0.1", "description": "Node_JS_File_Upload", "main": "server.js", "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0", "multer": "^1.2.0"}, "author": { "name": "Sibeesh"}}
現在,運行NPM install命令,如下所示。
npm install
運行該命令后,可以看到解決方案中安裝了依賴關系。
現在我們可以理解這些依賴關系是用來干什么的了。
express
根據Express Team,Express是一個極小且靈活的Node.js Web應用程序框架,為Web和移動應用程序提供了一組強大的功能。Express提供了基本Web應用程序功能的一個薄層,不會掩蓋你知道和喜歡的Node.js功能。你可以隨時在 這里 了解更多關于Express Package的信息。
multer
Multer是一個用于處理multipart / form-data的node.js中間件,主要用于上傳文件。它構建在busboy基礎上以提高效率。點擊 這里 閱讀更多關于multer包。
開始使用依賴關系
你可以按如下所示創建依賴關系的實例。
var Express=require('express');var multer=require('multer');var bodyParser=require('body-parser');var app=Express();app.use(bodyParser.json());
然后,創建說明應該在哪里以及如何保存文件/圖像的storage。
var Storage=multer.diskStorage({ destination: function (req, file, callback) {callback(null, "./Images");}, filename: function (req, file, callback) {callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);}});
每個文件包含以下信息:
fieldname:在窗體中指定的字段名
originalname:用戶計算機上文件的名稱
encoding:文件的編碼類型
mimetype:文件的MIME類型
size:文件的大小(以字節為單位)
destination:保存文件的文件夾
filename:目標文件的名稱
path:上傳文件的完整路徑
buffer:整個文件的Buffer
現在請創建multer對象如下。
var upload=multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count
這里multer接受我們在上一步中創建的storage作為參數。函數
array(fieldname[, maxCount])
接受文件數組,所有文件名都為fieldname。
現在我們該寫post和get請求了:
app.get("/", function (req, res) {res.sendFile(__dirname + "/index.html");});app.post("/api/Upload", function (req, res) {upload(req, res, function (err) { if (err) { return res.end("Something went wrong!");} return res.end("File uploaded sucessfully!.");});});
這里/ api / Upload是我們將要設置的操作名稱,在我們馬上就會創建的HTML頁面上。最后,但并非最不重要的是,我們需要確保應用程序正在偵聽我們的特定端口,在本例下,為port 2000。
app.listen(2000, function (a) { console.log("Listening to port 2000");});
創建HTML頁面并設置上傳
你可以使用jquery-3.1.1.min.js和jquery.form.min.js的引用創建如下所示的頁面。
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8" /><title>Upload images to server using Node JS</title><script src="Scripts/jquery-3.1.1.min.js"></script><script src="Scripts/jquery.form.min.js"></script></head><body><form id="frmUploader" enctype="multipart/form-data" action="api/Upload/" method="post"><input type="file" name="imgUploader" multiple /><input type="submit" name="submit" id="btnSubmit" value="Upload" /></form></body></html>
請注意,用于表單的ecctype必須是multipart / form-data,操作必須與我們在API中設置的相同。
創建Ajax提交事件
現在創建ajax事件,在事件中我們將調用我們的API。
<script> $(document).ready(function () { var options={ beforeSubmit: showRequest, // pre-submit callback success: showResponse // post-submit callback }; // bind to the form's submit event $('#frmUploader').submit(function () { $(this).ajaxSubmit(options); // always return false to prevent standard browser submit and page navigation return false; }); }); // pre-submit callback function showRequest(formData, jqForm, options) { alert('Uploading is starting.'); return true; } // post-submit callback function showResponse(responseText, statusText, xhr, $form) { alert('status: ' + statusText + '\n\nresponseText: \n' + responseText ); } </script>
ajaxSubmit函數是插件jquery.form.min.js的一部分,因此請確保你已經包含它。
運行應用程序
現在請運行你的應用程序。在運行應用程序之前,你總是可以將腳本文件設置為啟動文件,要設置的話就右鍵單擊項目并單擊屬性。
現在你可以打開命令提示符,你可以在命令提示符處手動定位項目,也可以使用“Open command prompt here”選項。要選擇的話,請右鍵單擊你的項目并選擇如下選項。
現在在命令提示符中鍵入node server.js,這將確保你的服務器正在運行。如果一切ok的話,你可以看到如下窗口。
現在我們可以運行我們的網頁,因為服務器已經準備就緒,請訪問瀏覽器并輸入網址http://localhost:2000。使用我們創建的文件上傳器選擇幾個文件。
如果單擊提交,你可以看到我們正在調用我們的方法操作,并且文件已上傳。
你總是可以下載附帶的源代碼以查看完整的代碼和應用程序。編碼快樂!
結論
歡迎給出你寶貴的建議和反饋。
本文由華宇互聯旗下領先品牌樂橙谷提供!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。