8

こんにちは、ユーザーのカートを保存するために使用するmongoengineのmongoにこのテストデータがあります。

{
    "_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

この場合、アイテムをグループ化する必要があると思います。フィルターで生のクエリを使用してみました:cart.items.filter(__raw__...) しかし、この場合は生がサポートされていないため、これは機能しません。どうすればこれを行うことができるか、誰かが私を助けてくれますか? ありがとうございました!

4

1 に答える 1