在mongoengine EmbeddedDocumentListField中按分组

理论上的

嗨,我在mongo中有用于mongoengine的测试数据,用于存储用户的购物车:

{
    "_id" : ObjectId("55e492ac516ddc17a8b07d2a"),
    "user" : ObjectId("55e3f236516ddc78296968be"),
    "items" : [
        {
            "item" : ObjectId("55e24cd6516ddcbdc081842b"),
            "quantity" : 2,
            "added_date" : ISODate("2015-08-31T17:44:49.023Z")
        },
        {
            "item" : ObjectId("55e24cd6516ddcbdc0818425"),
            "quantity" : 3,
            "added_date" : ISODate("2015-08-31T17:44:49.025Z")
        },
        {
            "item" : ObjectId("55e24cd6516ddcbdc0818420"),
            "quantity" : 3,
            "added_date" : ISODate("2015-08-31T17:44:49.026Z")
        }
    ]
}

这里的模型:

class CartItem(mongoengine.EmbeddedDocument):
    item = mongoengine.ReferenceField('Item')
    quantity = mongoengine.IntField()
    added_date = mongoengine.DateTimeField(default=datetime.now())

class Cart(mongoengine.Document):
    user = mongoengine.ReferenceField('User')
    items = mongoengine.EmbeddedDocumentListField(CartItem)

在这里,我将物品存储在用户的购物车中。现在,我想在项目列表字段中获得所有唯一的项目,因为将有重复的项目。

我执行以下查询以获取项目:

cart = Cart.objects.filter(user=user).first()
queryset = cart.items

在这种情况下,我认为我必须对项目进行分组,我尝试在filter中使用raw查询:cart.items.filter(__raw__...)但这是行不通的,因为在这种情况下不支持raw。有人可以帮我吗?谢谢!

拉胡尔·古普塔(Rahul Gupta)

你可以.distinct()把所有的唯一值items而不是做groupby

返回给定字段的不同值的列表。

您需要执行以下操作:

unique_items = Cart.objects.filter(user=user).first().distinct('items')

这将返回items购物车中特定用户的唯一列表

编辑:

如果要itemitems嵌入式文档字段中包含唯一的字段列表,则需要使用点号.转到该字段。

Cart.objects.filter(user=user).first().distinct('items.item')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Mongoengine 中对 EmbeddedDocumentListField 对象进行分页?

MongoEngine:EmbeddedDocumentListField()和ListField(EmbeddedDocumentField())之间的区别?

Mongoengine EmbeddedDocumentListField // 我只能访问获取方法

MongoEngine中的链接查询

在MongoEngine中增加IntField

MongoEngine中的经典映射

如何在Django REST Framework Mongoengine中序列化EmbeddedDocumentListField?

在MongoEngine中按条件更新嵌套属性

MongoEngine中的“ reload()”是什么

Python MongoEngine中的异构列表

无法在virtualenv中安装mongoengine

mongoengine中的EmbeddedDocumentField和ReferenceField

如何在mongoengine中进行“分组依据”

安全性,mongoengine中的javascript注入

在 mongoengine 模型字段中引用 SQL 模型

MongoDB / MongoEngine-查询列表中的项目

如何使用Mongoengine从MongoDB中删除文档?

分配后,词典在MongoEngine中成为BaseList

在Flask应用中访问mongoengine实例的属性

MongoEngine:将EmbeddedDocument存储在DictField中

在MongoEngine + Django中添加数据

save() 在 Mongoengine 中不起作用

在MongoEngine中更新和嵌入文档

Django mongoengine文档中的Manytomany字段

如何在mongoengine中的数据库中遍历集合?

如何在mongoengine中的查询集上按objectId的时间戳(降序)排序?

mongoengine-在单个查询中的单个字段上按“或”进行过滤

使用mongoengine将文档插入到集合中

我无法对 mongoengine 模型类中的输入数据执行验证