Hi così ho questo dati di test a Mongo per mongoengine che uso per la memorizzazione della spesa dell'utente:Raggruppamento nella mongoengine EmbeddedDocumentListField
{
"_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")
}
]
}
Ecco i modelli:
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)
Qui devo conservare gli elementi in carrello dell'utente. Ora vorrei ottenere tutti gli oggetti unici nel campo dell'elenco degli articoli perché ci saranno oggetti duplicati.
ho eseguire le seguenti query per ottenere gli elementi:
cart = Cart.objects.filter(user=user).first()
queryset = cart.items
In questo caso penso che avrei dovuto raggruppare gli elementi, ho provato ad utilizzare interrogazione prime filtro: cart.items.filter(__raw__...)
Ma questo semplicemente non funziona perché raw non è supportato in questo caso. Qualcuno può aiutarmi per come posso farlo? Grazie!
È fantastico! Grazie! L'unica cosa che ho cambiato è .distinct ('items.item') – Nazariy1995
Felice di aiutare! Ho incluso lo stesso in ans. –