struktura:Jak usunąć element z listy (ListField) według identyfikatora w MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
muszę usunąć id = 8 pozycję, dzięki.
struktura:Jak usunąć element z listy (ListField) według identyfikatora w MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
muszę usunąć id = 8 pozycję, dzięki.
Hi można wyciągnąć elementy z tablicy:
https://github.com/hmarr/mongoengine/blob/master/tests/queryset.py#L1374
patrz $ ciągnąć: http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
Trzeba użyć $ ściągania operatora tutaj:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
db.collection.update({'title':'test'},{$pull : { 'comments' : { 'id' : 8 }});
Oto jeden przykład operatora przyciągania, za pomocą flask_mongoengine i zakładając, że nadrzędna klasa obiektu nazywa się Blog, a komentarze to EmbeddedDocuments w blogu.
Blog.objects(id=blog_id).update_one(pull__comments___id=comment_id)
Zwróć uwagę na potrójne podkreślenie w komentarzu id. To dlatego, że jeśli chcesz klucze podstawowe na temat komentarzy, trzeba dodać jeden w swojej deklaracji modelu tak:
class Comment(db.EmbeddedDocument):
_id = db.ObjectIdField(primary_key=True, default=lambda: ObjectId())
...
Funkcja Lamba będzie wygenerować klucze podstawowe dla ciebie.