Django用mongoengine操作mongodb

 最近在写Django项目,使用的是mongodb,虽然Django不支持NoSQL,但是mongoengine可以帮助我们像ORM一样在Django项目中去操作mongodb

推荐一个可视化工具  Robo 3T 

这里贴几个我觉得比较有帮助的帖子,特别是在一对一,一对多的引用

先放mongoengine的官方文档

http://docs.mongoengine.org/tutorial.html

这是翻译的中文文档,版本比较老,对应官方文档看
https://www.cnblogs.com/fillim/p/4864523.html

https://blog.csdn.net/qq_38890497/article/details/80392846

https://www.linuxzen.com/mongoengineshi-yong-bi-ji.html

ReferenceField 引用字段

class Org(Document):
    owner = ReferenceField('User')

class User(Document):
    org = ReferenceField('Org', reverse_delete_rule=CASCADE)

User.register_delete_rule(Org, 'owner', DENY)

创建集合 

# model.py

from mongoengine import *
from datetime import datetime,timedelta

connect('mongotest')

class User(Document):
    name = StringField()

class Page(Document):
    content = StringField()
    author = ReferenceField(User,reverse_delete_rule = CASCADE)

引用查询

扫描二维码关注公众号,回复: 3542990 查看本文章
from mongoengine import *
from datetime import datetime,timedelta
from ReferencenField import *
import json
from bson import json_util

connect('mongotest')

# 一对一引用查询
author = User.objects.filter(name="John Smith")[0]
author2 = Page.objects.filter(content="test3 Page").first().author

content = Page.objects.filter(author=a)
content_ = Page.objects(author__in=[a])

print(author.name)
print(author2.name)

print(content_)

for i in content:
    print(i.author.name,':',i.content)

# 一对多引用查询
John_Smith = User.objects.filter(name="John Smith")[0]
llz = User.objects.filter(name='lilinze')[0]
# print(llz.name)

print('查询作者是llz的Page')
pages = Page.objects.filter(author=llz)
for i in pages :
    print(i.content)

print('查询作者是John_Smith的Page')
pages = Page.objects.filter(author=John_Smith)
for i in pages:
    print(i.content)

Objectid转为字符串

John = User.objects.filter(name="John Smith")[0].id
print(John)
dict = {'John':John}
print('dict:',dict)
# j_son = json.dumps(dict)

print('--------ObjectId转为Json----------')
data = json_util.dumps(John)
print('data:',data)
print('type:',type(data))


print('--------Json--to--dict----------')
print('********************************')
dd = json.loads(data)
print(dd)
print(type(dd))
print(dd['$oid'])
print(type(dd['$oid']))
dd_ = {'$oid':dd['$oid']}
jdd_ = json.dumps(dd_)
objecdd_ = json_util.loads(jdd_)
print(objecdd_)
print(type(objecdd_))
print('********************************')

print('--------Json--to--ObjectId----------')
ObjectId = json_util.loads(data)
print(ObjectId)
print(type(ObjectId))

猜你喜欢

转载自blog.csdn.net/qq_42684157/article/details/82807635
今日推荐