Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mongoengine EmbeddedDocumentListField中的分组依据_Python_Django_Mongodb_Mongoengine_Embedded Documents - Fatal编程技术网

Python mongoengine EmbeddedDocumentListField中的分组依据

Python mongoengine EmbeddedDocumentListField中的分组依据,python,django,mongodb,mongoengine,embedded-documents,Python,Django,Mongodb,Mongoengine,Embedded Documents,您好,我在mongo for mongoengine中有此测试数据,用于存储用户的购物车: { "_id" : ObjectId("55e492ac516ddc17a8b07d2a"), "user" : ObjectId("55e3f236516ddc78296968be"), "items" : [ { "item" : ObjectId("55e24cd6516ddcbdc081842b"), "qua

您好,我在mongo for 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)
在这里,我将项目存储在用户的购物车中。现在,我想获得items list字段中的所有唯一项,因为将有重复项

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

cart = Cart.objects.filter(user=user).first()
queryset = cart.items
在这种情况下,我想我必须对项目进行分组,我尝试在filter:
cart.items.filter(\uuuuuu raw\uuuu…
中使用raw查询,但这不起作用,因为这种情况下不支持raw。有人能帮我怎么做吗?谢谢大家!

您可以使用来获取
项目的所有唯一值,而不是执行
分组操作

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

您需要执行以下操作:

unique_items = Cart.objects.filter(user=user).first().distinct('items')
这将为特定用户返回购物车中唯一的
项目列表

编辑:

如果您想要在
项目
嵌入文档字段内的
项目
字段的唯一列表,则需要使用点
转到该字段

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

太好了!谢谢我唯一改变的是.distinct('items.item')很高兴能帮忙!我已经在ans中包含了相同的内容。@RahulGupta-我们如何在进行区分的同时对结果集进行排序?