MongoDB官方下载地址
下载完成后点击运行msi文件
同意协议,略过不表
选择自定义安装
此处可以查看并自定义安装路径
从 MongoDB 4.0 开始,默认情况下,可以在安装期间配置和启动 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
完成安装
打开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()
---
>
启动成功后,数据库操作基本命令:
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
通过非授权的方式启动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")
以授权的方式启动Mongo,切换数据库
use MGI_DB
创建用户(用户名密码自己随意改)
db.createUser(
{
user:"root",
pwd:"123456",
roles:[
{
role:"dbOwner",
db:"MGI_DB"
}
],
mechanisms:["SCRAM-SHA-1"]
}
)
通过客户端连接MGI_DB数据库,下载安装studio 3T,可以一路默认安装成功。
连接成功
创建数据库表
db.createCollection("MGI_Structure")
django项目中新建APP,在settings中添加APP名称,一般性流程,不提。
由于django官方没有支持MongoDB,经过调研对比,得出以下结论:
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官网