win10系統MongoDB 4.0安裝配置記錄

1.下載並運行安裝文件

MongoDB官方下載地址
下載完成後點擊運行msi文件
MongoDB 4.0安裝
同意協議,略過不表
選擇自定義安裝
自定義安裝
此處可以查看並自定義安裝路徑
查看並自定義安裝路徑
從 MongoDB 4.0 開始,默認情況下,可以在安裝期間配置和啓動 MongoDB 作爲服務,並在成功安裝後啓動 MongoDB 服務。
配置MongoDB作爲服務

如果你選擇不將 MongoDB 配置爲服務,請取消選中 Install MongoD as a Service。

如果你選擇將 MongoDB 配置爲服務,則可以:

    指定以下列用戶之一運行服務:
        網絡服務用戶;即 Windows 內置的 Windows 用戶帳戶
        本地或域用戶: 
            對於現有本地用戶帳戶,Account Domain 指定爲 .,併爲該用戶指定 Account Name 和 Account Password。
            對於現有域用戶,請爲該用戶指定 Account Domain,Account Name 和 Account Password。

    指定 Service Name。如果你已擁有具有指定名稱的服務,則必須選擇其他名稱。
    指定 Data Directory(數據保存目錄),對應於 --dbpath。如果該目錄不存在,安裝程序將創建該目錄併爲服務用戶設置訪問權限。
    指定 Log Directory(日誌保存目錄),該目錄對應於 --logpath。如果該目錄不存在,安裝程序將創建該目錄併爲服務用戶設置訪問權限。

MongoDB是官方的數據庫圖形化工具,不用安裝,可以安裝Robo 3T
取消勾選
完成安裝
完成安裝

2.配置啓動

打開MongoDB安裝路徑(默認路徑C:\Program Files\MongoDB\Server\4.0\bin)就會發現MongoDB的一系列程序,我們主要用到的就是mongo.exe(客戶端)和mongod.exe(服務端)。
啓動mongod.exe如果出現閃退的情況,需要在MongoDB所在盤下的根目錄創建一個data文件夾,並在data文件夾中創建一個db子文件夾。然後打開cmd,進入到MongoDB的bin目錄下,輸入命令

mongod --dbpath c:/data

此處參考:mongoDB安裝及啓動配置

接着繼續點擊mongod.exe進行啓動,啓動後再在bin目錄下執行mongo:

C:\Program Files\MongoDB\Server\4.0\bin>mongo
MongoDB shell version v4.0.10
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("35deb621-4ffd-4075-abe2-70713bce8a21") }
MongoDB server version: 4.0.10
Server has startup warnings:
2019-06-03T23:24:28.668-0700 I CONTROL  [initandlisten]
2019-06-03T23:24:28.668-0700 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-06-03T23:24:28.668-0700 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-06-03T23:24:28.668-0700 I CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

>

測試服務所在27017端口,啓動成功:
測試MongoDB端口

3.創建數據庫

啓動成功後,數據庫操作基本命令:

show dbs:顯示數據庫列表 
show collections:顯示當前數據庫中的集合(類似關係數據庫中的表) 
show users:顯示用戶
use <db name>:切換當前數據庫,這和MS-SQL裏面的意思一樣 
db.help():顯示數據庫操作命令,裏面有很多的命令 
db.foo.help():顯示集合操作命令,同樣有很多的命令,foo指的是當前數據庫下,一個叫foo的集合,並非真正意義上的命令 
db.foo.find():對於當前數據庫中的foo集合進行數據查找(由於沒有條件,會列出所有數據) 
db.foo.find( { a : 1 } ):對於當前數據庫中的foo集合進行查找,條件是數據中有一個屬性叫a,且a的值爲1

MongoDB沒有創建數據庫的命令,但有類似的命令。

如果想創建一個"myTest"的數據庫,先運行use myTest命令,
之後就做一些操作(如:db.createCollection(‘myTest’)),這樣就可以創建一個名叫"myTest"的數據庫。

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> use MGI_DB
switched to db MGI_DB
> db.createCollection('MGI_DB')
{ "ok" : 1 }
> show dbs
MGI_DB  0.000GB
admin   0.000GB
config  0.000GB
local   0.000GB

4.創建數據庫管理員及用戶

1.創建數據庫管理員

通過非授權的方式啓動mongo,切換至admin數據庫

use admin

添加管理員用戶(用戶名密碼自己隨意改)

db.createUser({user:"admin",pwd:"123456",roles:["root"]})

注意:此處遇上一個錯誤

2019-06-05T10:00:17.434+0800 E QUERY    [thread1] Error: couldn't add user: Use of SCRAM-SHA-256 requires undigested passwords :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1292:15
@(shell):1:1

解決方案:修改mechanisms加密方式爲SCRAM-SHA-1

db.createUser({ 
    user: "admin", 
    pwd: "123456", 
    roles: [ { role: "root", db: "admin" } ], 
    mechanisms : ["SCRAM-SHA-1"] 
})

創建成功:

Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1"
        ]
}

認證

db.auth("admin", "123456")

2.添加普通用戶

以授權的方式啓動Mongo,切換數據庫

use MGI_DB

創建用戶(用戶名密碼自己隨意改)

db.createUser(
	{
		user:"root",
		pwd:"123456",
		roles:[
			{
				role:"dbOwner",
				db:"MGI_DB"
			}
		],
		mechanisms:["SCRAM-SHA-1"]
	}
)

通過客戶端連接MGI_DB數據庫,下載安裝studio 3T,可以一路默認安裝成功。
客戶端連接數據庫
連接成功
在這裏插入圖片描述

5.創建數據庫表及操作

創建數據庫表

db.createCollection("MGI_Structure")

使用studio 3T導入數據
導入數據

6.django連接MongoDB

django項目中新建APP,在settings中添加APP名稱,一般性流程,不提。
由於django官方沒有支持MongoDB,經過調研對比,得出以下結論:

  1. 最直接的方式是使用PyMongo——MongoDB提供的Python Driver。但是還需要自己去維護數據庫連接,寫一大堆CRUD語句。
  2. 你可能聽說過django-nonrel 。即Django none relationship,非關係型的Django。django-nonrel提供了一層adapter,配合特定的backend,可以連接各種NoSQL。比如連接MongoDB的django-mongodb-engine。但是,django-nonrel 的實現是在內存中模擬SQL數據庫操作,這種思路沒有得到Django核心的支持,所以只能是一個外部版本,不夠穩定可靠。同樣的原因,django-mongodb-engine是基於django-nonrel的MongoDB backend實現,也不予考慮。
  3. MongoEngine,目前最好的選擇。與Django Model(ORM)相當接近,可以快速上手。

settings中修改數據庫配置,置爲None,引入mongoengine來連接數據庫

import mongoengine

from mongoengine import connect
connect(
    'MGI_DB',
    host='127.0.0.1',
    port=27017,
    username='admin',
    password='123456',
    authentication_source='admin'
)

DATABASES = {
    'default': {
        'ENGINE': None, # 把默認的數據庫連接至爲None
    }
}

在models中也引入mongoengine連接數據庫

from mongoengine import *
connect(
    'MGI_DB',
    host='127.0.0.1',
    port=27017,
    username='admin',
    password='123456',
    authentication_source='admin'
)

建數據庫表,繼承Document類,數據庫中已經導入的字段必須全部添加進來,而且需要指定操作的表

class MGIStructureAttribute(Document):
    _id = StringField(max_length=128, null=True, blank=True, primary_key=True)
    aurl = StringField(max_length=128, null=True, blank=True)
    auid = StringField(max_length=128, null=True, blank=True)
    data_api = StringField(max_length=128, null=True, blank=True)
    ...

	meta = {'collection': 'MGIStructureAttribute'}  # 指明連接數據庫的哪張表

測試連接

queryCC = "N4"
testName = MGIStructureAttribute.objects(compound=queryCC) # 一定要用雙引號才能識別
for u in testName:
    print("When compound is",queryCC,",the attribute --> _id:",u._id,",density:",u.density)

連接成功,測試結果:
測試結果

再添加部分學習材料

一文讀懂非關係型數據庫(NoSQL)
[MongoDB]Mongo基本使用
Django+MongoDB
結合使用 MongoDB 和 Django
django-mongodb-engine官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章