- 什么是 MongDB 数据库
mongodb 是一个分布式文件存储的数据库,由C++语言编写。为web应用提供可扩展的高性能数据存储解决方案。
- 什么是非关系型数据库
非关系型数据库被称之为 NosQL(not only sql) ,意思是不仅仅是 sql
在2009年,提出了 No5QL 的概念,此时 No5QL 主要是指非关系型、分布式、本提供ACID(数据库事务处理的四个基本要素)的数据库设计模式在亚特兰大举行的 No5QL(esat) 讨论会上,对 NoSQL 最普遍的定义是’非关联型的’,强调Key-value存储和文档数据库的优点,而不是单纯的反对 RDBMS 至此,NoSQL开始正式的出现在世人面前
MongoDB 是一个介于关系型数据库和非关系数据库之间的产品。
- 最常用的 NoSQL 类型
key-value
- 下载 mongdb
https://www.mongodb.com/try/download/community
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKJGIVlm-1653704524536)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20220527155200205.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9VKuvmK-1653704524537)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20220527155743264.png)]
- 启动 mongdb
在 data 目录下面创建 文件夹 db
mkdir db
去 bin 目录执行启动
mongod --dbpath …/data/db
启动交互 新建一个 bin 目录的 cmd 窗口
mongo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2JLDIo6r-1653704524538)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20220527160258736.png)]
- 安装 pymongo
pip install pymongo==3.10.0
- 创建 app 子应用
python .manage.py startapp app
- urls.py(子路由)
from django.urls import path
from app.views import Index
urlpatterns = [
path('index/', Index.as_view()),
]
- urls.py(总路由)
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app.urls'))
]
- settings.py
from pymongo import MongoClient
MONGOCLIENT = MongoClient(host='localhost', port=27017) # 配置 mongo 连接信息
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False
- app 子应用创建 mongo_models.py
from django.conf import settings
conn = settings.MONGOCLIENT['user_mongodb']
class User(object):
db = conn['user']
@classmethod
def insert(cls, **params):
return cls.db.insert(params)
@classmethod
def get(cls, **params):
return cls.db.find_one(params)
@classmethod
def get_more(cls, **params):
return list(cls.db.find(params))
@classmethod
def update(cls, _id, **params):
return cls.db.update({'_id': _id}, {'$set': params})
- 测试
// 打开 Django shell 界面
python manage.py shell
// 导入 mongo_models 中的 User
from app.mongo_models import User
// 创建数据
data = {“_id”: 123, “name”: “小钟”, “age”: 21}
// 调用自定义的方法
rs = User.insert(**data)
// 查看结果
rs
// 调用自定义方法查询
rs1 = User.get(_id=rs)
// 查看结果
rs1
- 安装 mongoengine
pip install mongoengine
- 子应用创建 mongo_engine.py
from mongoengine import connect, Document, StringField, IntField, ReferenceField
connect('mongo_engine', host='localhost', port=27017)
class Users(Document):
name = StringField(required=True, max_length=20)
age = IntField(required=True, default=0)
class userLogin(Document):
user = ReferenceField(Users)
usernames = StringField(required=True, max_length=20)
password = StringField(required=True, max_length=20)
- views.py
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from django.views import View
from app.mongo_engine import Users, userLogin
class Index(View):
def get(self, request):
user = Users
userinfo = user.objects.create(name='小钟', age=21)
userlogin = userLogin(username='root', password='123456')
userlogin.save()
return HttpResponse('my name is {} my age is {} her username is {} her password is {}'
''.format(userinfo.name, userinfo.age, userlogin.username, userlogin.password))
- 启动 Django
python .manage.py runserver



