我的"桌子"看起来像这样:
{'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)
有什么方法可以索引动作列表中的项目吗?或者我是否必须将它们分成更多的表格?
对于我来说,将动作保持在当前表行中会更方便.
我正在使用mongoengine和Django,并且在我的项目中需要在提供单个请求时连接到两个MongoDB实例.如果我使用它可以正常工作:
connect("mdb1")
#do stuff with mdb1
...
connect("mdb2")
#do stuff with mdb2
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否是一种正确的做法.
我有以下课程
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 的分支,它允许DateTimeField基于将True传递给一个auto_now或auto_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脚本从使用pymongo切换到使用mongoengine.以前,我有这个电话:
client_count = db.command("serverStatus")["connections"]['current'] - 1
但我希望使用mongoengine的包装来获取当前连接的数量.我查看了服务器状态和mongoengine 文档,但无法找到提取服务器变量的等效调用.
我想交换到mongoengine,因为我们正在使用其ODM功能,我们希望减少冗余.
有什么指针吗?什么是正确的语法,如果有的话?谢谢.
与此同时,我们将使用pymongo获取正确的数据,同时使用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。
拜托,有人能帮我做对吗?
我正在使用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__. 我很坚持这一点,将不胜感激您的帮助。
我有一个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,然后以某种方式指定查询信息.
有谁能推荐一个解决方案?
如何使用 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) 我想批量更新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)
该属性设置foo到new 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) mongoengine ×10
mongodb ×5
python ×5
django ×3
flask ×2
pymongo ×2
python-2.7 ×2
fork ×1
pagination ×1