win10系统MongoDB 4.0安装配置记录

1.下载并运行安装文件

MongoDB官方下载地址
下载完成后点击运行msi文件
win10系统MongoDB 4.0安装配置记录_第1张图片
同意协议,略过不表
选择自定义安装
win10系统MongoDB 4.0安装配置记录_第2张图片
此处可以查看并自定义安装路径
win10系统MongoDB 4.0安装配置记录_第3张图片
从 MongoDB 4.0 开始,默认情况下,可以在安装期间配置和启动 MongoDB 作为服务,并在成功安装后启动 MongoDB 服务。
win10系统MongoDB 4.0安装配置记录_第4张图片

如果你选择不将 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
win10系统MongoDB 4.0安装配置记录_第5张图片
完成安装
win10系统MongoDB 4.0安装配置记录_第6张图片

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端口,启动成功:
win10系统MongoDB 4.0安装配置记录_第7张图片

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,可以一路默认安装成功。
win10系统MongoDB 4.0安装配置记录_第8张图片
连接成功
win10系统MongoDB 4.0安装配置记录_第9张图片

5.创建数据库表及操作

创建数据库表

db.createCollection("MGI_Structure")

使用studio 3T导入数据
win10系统MongoDB 4.0安装配置记录_第10张图片

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)

连接成功,测试结果:
win10系统MongoDB 4.0安装配置记录_第11张图片

再添加部分学习材料

一文读懂非关系型数据库(NoSQL)
[MongoDB]Mongo基本使用
Django+MongoDB
结合使用 MongoDB 和 Django
django-mongodb-engine官网

你可能感兴趣的:(Django学习笔记)