标签: mongoengine

将Django项目从MySQL转换为Mongo,是否存在任何重大缺陷?

我想试试Mongodb w/mongoengine.我是Django和数据库的新手,我很适合外键,联接,循环导入(你的名字).我知道我最终可以解决这些问题,但Mongo对于我正在做的事情来说似乎是一个更简单的解决方案.我的问题是我使用了很多可插拔的应用程序(Imagekit,Haystack,注册等),并想知道如果我进行切换这些应用程序是否会继续工作.我是否会遇到任何已知的头痛问题,如果是这样的话,我可能会继续用MySQL来解决问题.

python django mongodb mongoengine

2
推荐指数
1
解决办法
2376
查看次数

在mongodb usyng python中使用自定义ID类型

我使用mongodb作为Django 1.5应用程序中的一些信息的存储后端.

存储在mongodb集合中的每个文档都有一个_id字段,这是一个由几个字符串组成的字典.现在,当我尝试检索此信息时,我使用mongoengine将文档映射到模型类:

from mongoengine import *

class MyClass(Document):
    _id = DictField()
Run Code Online (Sandbox Code Playgroud)

在我看来:

documents = MyClass.objects
print documents
Run Code Online (Sandbox Code Playgroud)

当我打电话给视图时,我得到了一个 TypeError

TypeError at /viewname/
id must be an instance of (str, unicode, ObjectId), not <type 'dict'>
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,当我使用save rutine时

obj = MyClass({"tag":"sometag"})
obj.save()
Run Code Online (Sandbox Code Playgroud)

我得到exat相同的错误,但在db集合_id={"tag":"sometag"}中创建了文档.

什么可能发生的想法?它可能与此处发生的情况相同

注意:我尝试使用EmbeddedDocumentField,但结果是一样的(错误采用我的嵌入式类名而不是'dict')

python mongodb mongoengine

2
推荐指数
1
解决办法
1894
查看次数

Mongoengine to_json确实将ReferenceField转换为OID

如果model包含ListField(db.ReferenceField))并且在查询名为to_json()ir 之后不将子转换为json,则将其保留为OID.有没有办法轻松地将(至少到X深层次)孩子转换为json?

"data": {
 "articles": [],
 "category": {
  "_id": {
    "$oid": "5224905453f0462f5458a724"
  },
  "children": [
    {
      "$oid": "5224905453f0462f5458a725"
    },
    {
      "$oid": "5224905453f0462f5458a726"
    },
    {
      "$oid": "5224905453f0462f5458a727"
    },
    {
      "$oid": "5224905453f0462f5458a728"
    }
  ],
...........
Run Code Online (Sandbox Code Playgroud)

python mongoengine

2
推荐指数
1
解决办法
2263
查看次数

在 mongoengine 中堆叠多个过滤器查询

如何运行以下命令:

someQuerySet.filter(keyword='someKey')
someQuerySet.filter(keyword='someOtherKey')
Run Code Online (Sandbox Code Playgroud)

InvalidQueryError: Duplicate query conditions每当我尝试这样做时,我都会得到。我知道可以按值列表进行过滤,但现在,我需要进行单独的过滤。

后来编辑:我实际上正在使用:

someQuerySet.filter(keyword__ne='someKey')
someQuerySet.filter(keyword__ne='someOtherKey')
Run Code Online (Sandbox Code Playgroud)

django mongoengine

2
推荐指数
1
解决办法
2979
查看次数

在 MongoEngine 中更新 DictField?

如何将数据添加到 mongoengine 的字典中?
我没有再次保存整个字典的数据,我一次只想添加一个项目。

我试过使用:

Lookups.objects(pk="52d3a8e318fbaf0e1075de4f").update(push__schools=new_schools)
Run Code Online (Sandbox Code Playgroud)

但我认为这不起作用的原因push是将项目添加到列表,而不是字典。谁能帮帮我吗?

dictionary mongodb mongoengine

2
推荐指数
1
解决办法
3681
查看次数

mongoengine独特的约束

我有这个模型:

class SourceModel(Document):
    name = StringField(
        primary_key=True,
        max_length=50,
        required=True,
    )
    # some fields
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此代码时:

for source in SOURCES:
    SourceModel(**source).save()
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

mongoengine.errors.NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: mirad.source_model.$name_1  dup key: { : null })
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会发生此错误,原因unique是我的模型中没有此字段。我将此代码更改为:

for source in SOURCES:

    try:
        SourceModel(**source).save()
    except NotUniqueError:
         old_source = SourceModel.objects(name=source['name']).first()
         print old_source  # this line print None
Run Code Online (Sandbox Code Playgroud)

为什么

model mongodb mongoengine python-2.7

2
推荐指数
1
解决办法
1382
查看次数

无论如何要使用 mongoengine 在列中获得最大值?

我想知道是否有办法使用 Mongoengine 在 MongoDB 集合的列中获得最大值。是否可以?

python mongodb mongoengine aggregation-framework

2
推荐指数
1
解决办法
2100
查看次数

Django mongoengine 文档中的 Manytomany 字段

我有以下 Django 模型:

from mongoengine import *
from datetime import datetime

class Company(Document):

    name = StringField(max_length=500)



class Feedback(Document):

    text = StringField(max_length=500)
    is_approved = BooleanField(default=False)
    date = DateTimeField(default=datetime.now())
Run Code Online (Sandbox Code Playgroud)

我想在公司中添加许多反馈字段

提前致谢。

python django mongodb mongoengine

2
推荐指数
1
解决办法
1792
查看次数

mongoengine 中对象和过滤器的区别是什么?

mongoengine有一个集合中查询对象(文件)的方法有两种:

Test.object(category="blabla")
Run Code Online (Sandbox Code Playgroud)

Test.object.filter(category="blabla")
Run Code Online (Sandbox Code Playgroud)

他们返回相同的结果。但问题是有什么区别?表现?或者他们只是彼此的别名?

python orm mongodb mongoengine python-2.7

2
推荐指数
1
解决办法
866
查看次数

如何使用mongoengine在EmbeddedDocument中定义objectid?

我的文档具有一些EmbeddedDocumentList,每个EmbeddedDocument应该具有自动生成的ObjectId(如_id)字段,因为我将编写查询以使用此_id字段获取单个EmbeddedDocument。

如何达到?

mongodb pymongo mongoengine

2
推荐指数
1
解决办法
2188
查看次数