标签: mongoengine

如何在MongoEngine中通过id从列表(ListField)中删除项目?

结构体:

{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}

我需要删除id = 8项,谢谢.

mongodb mongoengine

7
推荐指数
1
解决办法
4223
查看次数

如何在mongoengine中搜索oid文档

我需要通过oid从db获取文档,例如:

Docs.objects(_id='4f4381f4e779897a2c000009')
Run Code Online (Sandbox Code Playgroud)

但是如何做到这一点,如果_id需要ObjectId对象,甚至我尝试从pymongo设置ObjectId它不起作用.

Docs.objects(_id=pymongo.objectid.ObjectId('4f4381f4e779897a2c000009'))
Run Code Online (Sandbox Code Playgroud)

返回空列表

python mongodb mongoengine

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

mongoengine- referencefield存储什么

在mongoengine中,必须将哪个值设置为ReferenceField.我的意思是我们应该提供要参考的文档的"ObjectId".例如,

class Bar(Document):
    content = StringField()
    foo = ReferenceField('Foo')
Run Code Online (Sandbox Code Playgroud)

类Bar的对象应该具有"foo"属性中设置的值.它应该是'Foo'集合中某些文档的ObjectId吗?我还可以将任何其他唯一字段设置为引用字段中的值,提及它是哪个字段?

orm mongodb mongoengine

7
推荐指数
2
解决办法
5743
查看次数

如何在mongoengine中创建一个唯一的索引= True和sparse = True

我正在使用mongoengine和烧瓶.我有一个名为profile的db.Document类,其中我希望一个字段可以为空并且是唯一的,我理解这样做的方法是使该字段的索引既稀疏=真又唯一=真,我该如何这样做呢?

indexing unique sparse-matrix mongoengine

7
推荐指数
3
解决办法
5599
查看次数

无法使用mongoengine查询ListField

我正在使用mongoengine,我有以下情况,

我的模特:

class Item(Document):
   ...
   tags = ListField(StringField(max_length=30))
Run Code Online (Sandbox Code Playgroud)

查询:

filters = {
    'tags__contains': query
}
tags_with_counter = Item.objects.filter(**filters).item_frequencies('tags')
Run Code Online (Sandbox Code Playgroud)

这将返回包含标记名称和频率的元组列表.我想要做的只是获取包含查询的标签及其各自的频率.我怎样才能做到这一点?

python django mongodb mongoengine

7
推荐指数
1
解决办法
8005
查看次数

麻烦在mongoengine上渲染listfield model_form

我正在使用Flask,mongoengine进行项目,我正在尝试从http://docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-flask-mongoengine/获取基本的东西.

从上面的链接实现了所有内容后,我在Post中为"tags"添加了一个新字段,当我尝试创建帖子时,我的标签没有显示输入框.

任何帮助表示赞赏.

我的代码如下

class Post(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    slug = db.StringField(max_length=255, required=True)
    body = db.StringField(required=True)
    views = db.IntField(default=0)
    category = db.StringField()
    tags = db.ListField(db.StringField(max_length=30))
Run Code Online (Sandbox Code Playgroud)

模板

{% macro render(form) -%}
<fieldset>
{% for field in form %}
    {% if field.type in ['CSRFTokenField', 'HiddenField'] %}
        {{ field() }}
    {% else %}
    <div class="clearfix {% if field.errors %}error{% endif %}">
        {{ field.label }}
    <div class="input">
    {% if field.type == 'ListField' %}
    {% for subfield in …
Run Code Online (Sandbox Code Playgroud)

python mongoengine flask wtforms flask-mongoengine

7
推荐指数
1
解决办法
724
查看次数

mongoengine参考字段查询

我正在建造一个使用烧瓶架和mongoengine的餐厅预订网站.

我的主要目标是使用json获取客户id等于所需客户ID的所有预留对象

data = rzv.objects(restaurant=rest, customer=cdb.objects.get(id=request.args.get("customer-reservation"))).all()
Run Code Online (Sandbox Code Playgroud)

当我尝试触发此查询时,json给了我一个错误:

mongoengine.errors.InvalidQueryError
Run Code Online (Sandbox Code Playgroud)

我的预订模型如下:

class Reservations(document.Document):
    restaurant = fields.ReferenceField(Restaurant)
    customer = fields.ReferenceField(Customers)
    shift_type = fields.EmbeddedDocumentField(Shifts)
    room = fields.ReferenceField(Rooms)
    time = fields.StringField()
    covers = fields.IntField()
    status = fields.StringField(default="wait")
    desk = fields.EmbeddedDocumentField(Desks)
    date = fields.DateTimeField()
    sit_date = fields.DateTimeField()
    end_sit_date = fields.DateTimeField()
    cancel_date = fields.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

我的客户模型如下:

class Customers(document.Document):
    title = fields.StringField()
    full_name = fields.StringField()
    first_name = fields.StringField()
    last_name = fields.StringField()
    telephone = fields.StringField()
    visits = fields.StringField()
Run Code Online (Sandbox Code Playgroud)

JSON:

$.getJSON("?customer-reservation=" + $(this).attr("data-id"), function (data) {
            console.log(data);
            reservationFill(data);
        });
Run Code Online (Sandbox Code Playgroud)

最后是观点:

    if …
Run Code Online (Sandbox Code Playgroud)

python json mongodb mongoengine

7
推荐指数
1
解决办法
9845
查看次数

Mongoengine获取最新()

在django中如果我使用MongoEngine,如何获取查询集的最新实例

通常我们这样做

Users.objects.latest('id')
Run Code Online (Sandbox Code Playgroud)

但我不能latest在MongoEngine中使用.

;).我陷入了困境.

我在这里找不到解决方案.但我已经实施了.你对下面的意见怎么样?

Users.objects.all().order_by('-id').limit(1)[0] 
Run Code Online (Sandbox Code Playgroud)

这将返回最新的实例.

并通过将其交给mongoenngine来解决问题.

https://github.com/anishmenon/mongoengine/

您可以安装并使用

 Users.objects.latest('id')
Run Code Online (Sandbox Code Playgroud)

python django mongodb pymongo mongoengine

7
推荐指数
2
解决办法
3391
查看次数

如何使用Marshmallow序列化MongoDB ObjectId?

我正在使用棉花糖和mongoengine在Flask上构建和API.当我打电话并且ID应该被序列化时,我收到以下错误:

TypeError: ObjectId('54c117322053049ba3ef31f3') is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

我看到了其他库的一些方法来覆盖ObjectId的处理方式.我还没有想到Marshmallow,有谁知道怎么做?

我的模型是:

class Process(db.Document):
    name = db.StringField(max_length=255, required=True, unique=True)
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
Run Code Online (Sandbox Code Playgroud)

我的序列化器:

class ProcessSerializer(Serializer):
    class Meta:
        fields = ("id", "created_at", "name")
Run Code Online (Sandbox Code Playgroud)

并且观点:

class ProcessView(Resource):
    def get(self, id):
        process = Process.objects.get_or_404(id)
        return ProcessSerializer(process).data
Run Code Online (Sandbox Code Playgroud)

python mongoengine flask marshmallow

7
推荐指数
1
解决办法
3902
查看次数

python,mongoengine - 喜欢/正则表达式搜索

我知道我可以在mongodb上进行全局类型搜索:

db.person.find({ name: /*.bob.*/ })
Run Code Online (Sandbox Code Playgroud)

要么

db.person.find({ name: { $regex: '*.bob.*' }})
Run Code Online (Sandbox Code Playgroud)

如何使用mongoengine而不使用原始查询(这显然是基于我的搜索的唯一方法)?

我盲目地尝试了几种变体,如:

Person.objects(name='/.*bob.*/')
Person.objects(name='/\.*bob\.*/')
Person.objects(name='.*bob.*')
Person.objects(name='\\.*bob\\.*')
Run Code Online (Sandbox Code Playgroud)

等等,无济于事......

python mongoengine

7
推荐指数
1
解决办法
2677
查看次数