赵走x博客
网站访问量:151569
首页
书籍
软件
工具
古诗词
搜索
登录
2、在MongoDB开启验证的情况下,新建一个数据库 dbName
mac 安装mongodb
mongodb同一个document中两个字段比较查询
mongoengine 关系处理
mongoengine查询
ubuntu安装mongodb(不使用docker)
Centos安装mongodb(不使用docker)
MongoDB唯一索引(Unique) 空值问题
1、mongoengine.errors.InvalidQueryError: Cannot perform join in mongoDB
1、sanic中对motor的操作封装
1、mongodb设置密码后无效,还是可以外网无密码访问
mongoengine 关系处理
资源编号:76258
mongodb相关问题
数据库
热度:146
多种常用处理方式
# 一对一 ``` class Employee(Document): name = StringField() # 引用自己 boss = ReferenceField('self') # 根据字符串名字引用 profile_page = ReferenceField('ProfilePage') # 根据类引用 author = ReferenceField(User) class ProfilePage(Document): content = StringField() ``` # 一对多的处理 ``` class User(Document): name = StringField() class Page(Document): content = StringField() authors = ListField(ReferenceField(User)) bob = User(name="Bob Jones").save() john = User(name="John Smith").save() Page(content="Test Page", authors=[bob, john]).save() Page(content="Another Page", authors=[john]).save() # Find all pages Bob authored Page.objects(authors__in=[bob]) # Find all pages that both Bob and John have authored Page.objects(authors__all=[bob, john]) # Remove Bob from the authors for a page. Page.objects(id='...').update_one(pull__authors=bob) # Add John to the authors for a page. Page.objects(id='...').update_one(push__authors=john) ``` # 处理引用文件的删除 ``` class ProfilePage(Document): ... employee = ReferenceField('Employee', reverse_delete_rule=mongoengine.CASCADE) ``` 在此示例中的声明意味着,当Employee删除对象时,引用该员工的ProfilePage也会被删除。如果删除了整批员工,则所有链接的ProfilePage也会被删除。 其值可以采用以下任何常量: * mongoengine.DO_NOTHING 这是默认设置,不会执行任何操作。删除速度很快,但是可能导致数据库不一致或引用悬挂。 * mongoengine.DENY 如果仍然存在要删除的对象的引用,则拒绝删除。 * mongoengine.NULLIFY 任何仍引用要删除的对象的对象字段都设置为None(使用MongoDB的“ unset”操作),从而有效地消除了关系。 * mongoengine.CASCADE 删除包含引用要删除的对象的字段的任何对象。 * mongoengine.PULL 从ListField(ReferenceField)的任何对象字段中删除对对象的引用(使用MongoDB的“拉”操作 )。 >注意:设置这些删除规则的安全注意事项!由于删除规则不是由MongoDB本身在数据库级别记录的,而是由运行时在内存中的MongoEngine模块记录在数据库级别的,因此最重要的一点是,在调用删除操作之前,加载声明关系的模块。 例如,如果Employee对象存在于 payroll应用程序中,并且ProfilePage位于people 应用程序中,则people在删除任何员工之前加载应用程序非常重要,否则,MongoEngine将永远不知道这种关系的存在。 在Django中,一定要把那些已经对这样的删除规则声明的所有应用程序models.py的INSTALLED_APPS元组。 # 匹配动态字段 ``` class Link(Document): url = StringField() class Post(Document): title = StringField() class Bookmark(Document): bookmark_object = GenericReferenceField() link = Link(url='http://hmarr.com/mongoengine/') link.save() post = Post(title='Using MongoEngine') post.save() Bookmark(bookmark_object=link).save() Bookmark(bookmark_object=post).save() ```