标签: mongoengine

Djoo的MongoEngine和MongoKit

你有使用Django的MongoEngine或MongoKit吗?你更倾向哪个?

背景:

我正在开发一个新站点并且具有正常 Django开发的经验,但是对于我将使用的数据类型,MongoDB将比SQL数据库更适合.

我正在使用Python 2.7并且可以在我的主机上编译/安装任何东西,所以这不是问题.

python django mongodb mongoengine

6
推荐指数
1
解决办法
2043
查看次数

如何使用mongoengine进行分页?

我有一个关于使用mongodb和mongoengine进行分页的问题.我有一张桌子,将来会有数百万张唱片.而我正在做这样的分页.

我不确定这是正确的做法

    list = Books.objects.all()
    paginator = DiggPaginator(list, 20, body = 10, tail = 2)
Run Code Online (Sandbox Code Playgroud)

在这里,我打开整个表格,然后进行分页,我们再次进行下一页代码运行并带来第二页或任何页面.

这是正确的方法还是有更好的方法来做到这一点.

django pagination mongodb mongoengine

6
推荐指数
1
解决办法
5554
查看次数

MongoDB索引无法帮助查询多键索引

我有一组定义了多键索引的文档.但是,对于43K文档,查询的性能相当差.这个查询的〜215ms被认为是差的吗?如果nscanned是43902(等于集合中的文档总数),我是否正确定义了索引?

文献:

{
    "_id": {
        "$oid": "50f7c95b31e4920008dc75dc"
    },
    "bank_accounts": [
        {
            "bank_id": {
                "$oid": "50f7c95a31e4920009b5fc5d"
            },
            "account_id": [
                "ff39089358c1e7bcb880d093e70eafdd",
                "adaec507c755d6e6cf2984a5a897f1e2"
            ]
        }
    ],
    "created_date": "2013,01,17,09,50,19,274089",
}
Run Code Online (Sandbox Code Playgroud)

指数:

{ "bank_accounts.bank_id" : 1 , "bank_accounts.account_id" : 1}
Run Code Online (Sandbox Code Playgroud)

查询:

db.visitor.find({ "bank_accounts.account_id" : "ff39089358c1e7bcb880d093e70eafdd" , "bank_accounts.bank_id" : ObjectId("50f7c95a31e4920009b5fc5d")}).explain()
Run Code Online (Sandbox Code Playgroud)

说明:

{
    "cursor" : "BtreeCursor bank_accounts.bank_id_1_bank_accounts.account_id_1",
    "isMultiKey" : true,
    "n" : 1,
    "nscannedObjects" : 43902,
    "nscanned" : 43902,
    "nscannedObjectsAllPlans" : 43902,
    "nscannedAllPlans" : 43902,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0, …
Run Code Online (Sandbox Code Playgroud)

database performance mongodb mongoengine mlab

6
推荐指数
1
解决办法
1757
查看次数

如何在Python中创建Mongodb中唯一的字段组合

我想创建一个表,其中两个字段组合在一起形成一个索引字段.我创建表的Python代码如下.我想要做的是使组合字段course_namegroup_name唯一,以便没有两个具有相同course_namegroup_name可以创建的组.有人可以帮我这个吗?

class SocialGroup(Document):
    timestamp = DateTimeField(default=datetime.now)
    course_name = StringField()
    group_name = StringField(choices=[('A', 1), ('B', 1), ('C', 1),('D', 1), ('E', 1), ('F', 1), ('None',1)], default="None")
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine

6
推荐指数
1
解决办法
2024
查看次数

MongoEngine:在将document_type定义为str时,ReferenceField只接受DBRef或文档

在一个MongoEngine模型中,当我使用时,我正在使用参考字段

schedule =  ReferenceField('Schedule',required=True)
Run Code Online (Sandbox Code Playgroud)

并尝试插入文档

#my_schedule being a 'Schedule' object that has been created and saved successfully
record.schedule = my_schedule
record.save()
Run Code Online (Sandbox Code Playgroud)

我明白了

ValidationError: ValidationError (Calling:None) (A ReferenceField only accepts DBRef or documents: ['schedule'])
Run Code Online (Sandbox Code Playgroud)

但是,如果我将字段定义更改为

schedule =  ReferenceField(path.to.Schedule,required=True)
Run Code Online (Sandbox Code Playgroud)

(IE直接引用Schedule模型)

该文档可以成功保存.我怎样才能避免这个错误?

对计划模型的完全捍卫

class Schedule(Document):

    uid =       StringField(required=True)

    start =     DateTimeField(required=True)
    end =       DateTimeField(required=True)

    days =      ListField(required=True)

    toc =       StringField(required=False)

    meta = {
        'indexes':['uid']
    }
Run Code Online (Sandbox Code Playgroud)

并呼吁

class Calling(Document):
    """
    Calling Point
    """

    schedule =  ReferenceField('Schedule',required=True)

    tiploc =    StringField(required=True)
    calling =   ListField(StringField(required=True))

    arrive = …
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine

6
推荐指数
1
解决办法
3273
查看次数

对于具有多个进程的nginx + uwsgi,Mongodb副本集自动协调不起作用

大家好,我有下一个环境python2.7.5:

flask==0.10.1
flask-wtf==0.8.4
jinja2==2.7
werkzeug==0.9.1
flask-mongoengine==0.7.0
mongoengine==0.8.2
pymongo==2.5.2
uwsgi==1.9.13
Run Code Online (Sandbox Code Playgroud)

并有下一个应用程序'app.py':

from flask import Flask
from flask.ext.mongoengine import Document, MongoEngine
from mongoengine import StringField  

class Config(object):
    DEBUG = True
    MONGODB_HOST = ('mongodb://localhost:27017,localhost:27018/'
                    'test?replicaSet=rs0')
    MONGODB_DB = True

app = Flask(__name__)
app.config.from_object(Config)
MongoEngine(app)

class Test(Document):
    test = StringField(default='test')

    meta = {
        'allow_inheritance': False,
    }

    def __unicode__(self):
        return self.test

Test(test='test1').save()

@app.route('/')
def hello_world():
    return unicode(Test.objects.first())

if __name__ == '__main__':
    app.run('0.0.0.0', 8080, True)
Run Code Online (Sandbox Code Playgroud)

我有下一个nginx配置:

server {
    listen       80;
    server_name  localhost;
    location / { …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo mongoengine uwsgi

6
推荐指数
1
解决办法
3730
查看次数

如何在mongoengine中"分组"

假设我的Schema看起来像这样:

class User(Document):
  username = StringField()
  password = StringField()
  category = StringField()
Run Code Online (Sandbox Code Playgroud)

想象一下,我们有这些现有的类别:"avengers", "justice-leaguers", "villains",我想执行一个"group by"查询,User.objects.all()以便我可以得到这样的东西:

[
 [<User: IronMan object>, <User: Thor object>, <User: Hulk object>], 
 [<User: Superman object>,<User: Batman object>], 
 [<User: Ultron object>, <User: Joker object>, <User: LexLuthor object>]
]
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

{
 "avengers": [<User: IronMan object>, <User: Thor object>, <User: Hulk object>], 
 "justice-leaguers": [<User: Superman object>,<User: Batman object>], 
 "villains": [<User: Ultron object>, <User: Joker object>, <User: LexLuthor object>]
}
Run Code Online (Sandbox Code Playgroud)

我查看了MongoEngine的文档,但还没有找到任何有用的信息.多谢你们!

mongodb pymongo mongoengine

6
推荐指数
2
解决办法
4422
查看次数

Mongo DB - 使用map reduce或聚合

我在MongoDB集合中有一系列文档,如下所示:

{ 'time' : '2016-03-28 12:12:00', 'value' : 90 },
{ 'time' : '2016-03-28 12:13:00', 'value' : 82 },
{ 'time' : '2016-03-28 12:14:00', 'value' : 75 },
{ 'time' : '2016-03-28 12:15:00', 'value' : 72 },
{ 'time' : '2016-03-28 12:16:00', 'value' : 81 },
{ 'time' : '2016-03-28 12:17:00', 'value' : 90 },
etc....
Run Code Online (Sandbox Code Playgroud)

任务是 - 垃圾保持值为80,查找值entering低于80且exiting高于80的所有时间

{ 'time' : '2016-03-28 12:14:00', 'result' : 'enter' },
{ 'time' : '2016-03-28 12:16:00', 'result' : 'exit' …
Run Code Online (Sandbox Code Playgroud)

django mongodb mongoengine

6
推荐指数
1
解决办法
262
查看次数

如何在Django Rest Framework中正确创建自定义Swagger架构?

我在Django Rest Framework中创建可自定义的swagger模式时遇到问题.我已经阅读了文档页面,但没有找到关于如何在python中生成swagger注释的明确示例.

我知道在Django中使用ViewSets时很容易生成swagger/schema文档.但是,我只使用API​​Views并希望编写自定义架构.我尝试过创建一个CoreAPI架构,但我不知道如何实现它.我附上了一些示例代码和一些屏幕截图.屏幕截图从我拥有的到我想要的.

示例代码:

urls.py

from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from Views import SampleView as sv
from rest_framework_swagger.views import get_swagger_view
from rest_framework.documentation import include_docs_urls
from rest_framework.renderers import CoreJSONRenderer
from rest_framework.schemas import get_schema_view

schema_view enter code here= get_swagger_view(
    title='Sample API')

urlpatterns = [
    url(r'^sample/$', pv.SampleList.as_view()),
    url(r'^sample/(?P<id>[a-f\d]{24})/$', sv.SampleDetail.as_view()),
    url('^schema/$', schema_view),
]

urlpatterns = format_suffix_patterns(urlpatterns)
Run Code Online (Sandbox Code Playgroud)

views.py

from rest_framework.views import APIView
from Manager.SampleManager import SampleManager as sm

_sampleManager = sm()

class SampleList(APIView):
"""
get:
Return a list of all …
Run Code Online (Sandbox Code Playgroud)

core-api mongoengine python-3.x swagger django-rest-framework

6
推荐指数
1
解决办法
962
查看次数

Mongoengine 是否公开 $min、$max 字段运算符?

我正在使用 mongoengine,并且希望能够使用$min$max字段运算符(以执行条件更新),但我无法看到如何通过 mongoengine 界面执行此操作。

任何帮助是极大的赞赏。

python mongodb mongoengine

5
推荐指数
1
解决办法
255
查看次数