标签: mongoengine

创建索引 - MongoDB

我的"桌子"看起来像这样:

{'name':'Rupert', 'type':'Unicorn', 'actions':[
    {'time':0, 'position':[0,0], 'action':'run'},
    {'time':50, 'position':[50,0], 'action':'stoprun'},
    {'time':50, 'position':[50,0], 'action':'jump'},
    {'time':55, 'position':[50,0], 'action':'laugh'},
    ...
]}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以索引动作列表中的项目吗?或者我是否必须将它们分成更多的表格?

对于我来说,将动作保持在当前表行中会更方便.

python django mongodb pymongo mongoengine

3
推荐指数
2
解决办法
7432
查看次数

从django连接到多个mongodb实例

我正在使用mongoengine和Django,并且在我的项目中需要在提供单个请求时连接到两个MongoDB实例.如果我使用它可以正常工作:

connect("mdb1")
#do stuff with mdb1
...
connect("mdb2")
#do stuff with mdb2
Run Code Online (Sandbox Code Playgroud)

但我想知道这是否是一种正确的做法.

django mongodb mongoengine

3
推荐指数
1
解决办法
3077
查看次数

使用 mongoengine 将现有文档克隆到新的同级类文档

我有以下课程

class ParentDocument(Document):
    .
    .
    .

class Child1Document(ParentDocument):
    .
    .
    .

class Child2Document(ParentDocument):

    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

现在假设我有一个 Child1Document 类型的文档。是否可以将其克隆到 Child2Document 类型的新文档?

我试图做:

doc1 = Child1Document()
doc1.attr1 = foo
doc1.save()

doc2 = Child2Document()
doc2 = doc1
Run Code Online (Sandbox Code Playgroud)

但这会将 doc2 转换为 Child1Document 类型。有没有办法将 doc1 的所有内容复制到 doc2 而不转换 doc2?

mongoengine

3
推荐指数
1
解决办法
1485
查看次数

使用auto_now_add更新mongoengine中的DateTime字段

我正在尝试制作一个MongoEngine 的分支,它允许DateTimeField基于将True传递给一个auto_nowauto_now_add(一个Django)来自动更新.

到目前为止,我已经将属性添加到类似的__init__方法中DateTimeField:

def __init__(self, auto_now=None, auto_now_add=None, **kwargs):
    self.auto_now, self.auto_now_add = auto_now, auto_now_add
    super(DateTimeField, self).__init__(**kwargs)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法弄清楚如何在创建/保存文档时干净地填充此值.我到目前为止看到的唯一解决方案是在BaseDocument的保存或验证方法中添加字段特定的行为......但我不喜欢它.

有谁知道更好的方法?

顺便说一句:我在读完这个问题和@ equinoxel关于扩展mongo并在django中习惯这个属性的评论之后,我已经开始了.

python fork mongoengine

3
推荐指数
1
解决办法
5255
查看次数

MongoEngine和serverStatus

我正在将我的python脚本从使用pymongo切换到使用mongoengine.以前,我有这个电话:

client_count = db.command("serverStatus")["connections"]['current'] - 1

但我希望使用mongoengine的包装来获取当前连接的数量.我查看了服务器状态和mongoengine 文档,但无法找到提取服务器变量的等效调用.

我想交换到mongoengine,因为我们正在使用其ODM功能,我们希望减少冗余.

有什么指针吗?什么是正确的语法,如果有的话?谢谢.

与此同时,我们将使用pymongo获取正确的数据,同时使用mongoengine获取其他所有数据.

python mongodb mongoengine

3
推荐指数
1
解决办法
1377
查看次数

如何在 Mongoengine 上创建抽象模型?

我需要创建必须从其他类继承的类。我尝试将其作为结构来执行:

class A(Document):
    field_1 = ...
    field_2 = ...

class B(Document):
    field_a = ... 
    field_b = ... 

class C(A,B):
    specific_field_1 = ...
    specific_field_2 = ...

    meta = {
        'collection': 'class_c',
    }
Run Code Online (Sandbox Code Playgroud)

但我不知道决定是否符合规则。在数据库中,我不想要来自class A和 的集合class B

拜托,有人能帮我做对吗?

python django mongodb mongoengine python-2.7

3
推荐指数
1
解决办法
1657
查看次数

Mongoengine: TypeError: __init__() 得到一个意外的关键字参数

我正在使用flask-mongoengine 扩展,我有一个像这样的用户类:

class User(db.Document, UserMixin):     
    email = db.StringField(max_length=120, required=True, unique=True)
    password_hash = db.StringField(max_length=80, required=True)   
    active = db.BooleanField()
    fb_id = db.StringField(max_length=120, required=False)

    def __init__(self, email, password, fb_id=None, active=True):           
        hashp = md5.md5(password).hexdigest()        
        self.email=email
        self.password_hash=hashp
        self.fb_id=fb_id
        self.active=active
Run Code Online (Sandbox Code Playgroud)

但是当我做一个简单的获取时: User.objects.get(email = email)

我收到错误:

TypeError: __init__() got an unexpected keyword argument 'password_hash'

但是我在我的 init 中设置了 password_hash。令人惊讶的是,如果我删除整个__init__并通过 args 传递所有内容,它工作正常。

所以我认为我在__init__. 我很坚持这一点,将不胜感激您的帮助。

mongoengine flask flask-mongoengine

3
推荐指数
1
解决办法
5159
查看次数

使用Flask和Mongoengine进行高效分页

我有一个Flask应用程序,我想用它来显示MongoDB Collection中的分页数据表.但是,这个集合中可能有很多文档,所以我想懒得加载它们 - 只加载即将显示的文档.

我的问题是,在我的应用程序的一个页面上,我想分页:

Stuff.objects()

但在不同的页面上我想分页:

Stuff.objects(__raw__=query) 要么 Stuff.objects(message__in=Message.objects(__raw__=query))

调用任何这些特定函数会自动将所有相关对象加载到内存中(正如我通过运行发现的那样locals()),因此我需要使用以下命令对调用进行分页:

Stuff.objects().skip(number).limit(pagelength), 要么 Stuff.objects(__raw__=query).skip(number).limit(pagelength)

所以看起来我需要一个Paginator类,我可以简单地传入Report,然后以某种方式指定查询信息.

有谁能推荐一个解决方案?

pagination mongoengine flask

3
推荐指数
1
解决办法
1532
查看次数

ListField(DictField()) 与 mongoengine

如何使用 mongoengine 访问 ListField(DictField()) 并访问它,因为下面的代码不起作用?

from mongoengine import *

class Test():
    g = ListField(DictField(Mapping.build(
    test1=StringField(required=True),
    test2=StringField(required=True)
)))
Run Code Online (Sandbox Code Playgroud)

mongodb mongoengine python-2.7

3
推荐指数
1
解决办法
2895
查看次数

没有objects.update()的Mongoengine批量更新

我想批量更新mongoengine Documents实例中的更改,但据我所知,在符合条件的所有文档中model.objects.update(...)进行相同的更新.

例:

entities = Foo.objects

result = entities.update(
    set__foo='new bar',
    upsert=True,
    full_result=True)
Run Code Online (Sandbox Code Playgroud)

该属性设置foonew bar上有他们的所有文件foo等于bar.我想对每个文件做出不同的更改.

这可能吗?像这样的东西:

entities = Foo.objects

...  # make changes to each entity in entities

entities = Foo.objects.update(entities)
# these entities were bulk updated in mongodb.
Run Code Online (Sandbox Code Playgroud)

python pymongo mongoengine

3
推荐指数
1
解决办法
2925
查看次数