estructura:¿Cómo eliminar un elemento de una lista (ListField) por id en MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
necesito quitar el id = 8 artículo, gracias.
estructura:¿Cómo eliminar un elemento de una lista (ListField) por id en MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
necesito quitar el id = 8 artículo, gracias.
Hola se puede tirar de los artículos en una matriz:
https://github.com/hmarr/mongoengine/blob/master/tests/queryset.py#L1374
Ver $ tirón: http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
Es necesario utilizar el operador de extracción $ aquí:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
db.collection.update({'title':'test'},{$pull : { 'comments' : { 'id' : 8 }});
Aquí hay un ejemplo del operador de extracción, usando flask_mongoengine y asumiendo que la clase de objeto padre se llama Blog, y los comentarios son EmbeddedDocuments dentro de Blog.
Blog.objects(id=blog_id).update_one(pull__comments___id=comment_id)
Observe el triple guión bajo en los comentarios id. Esto se debe a que si quieres las claves principales en los comentarios, debe añadir uno en su modelo de declaración como esta:
class Comment(db.EmbeddedDocument):
_id = db.ObjectIdField(primary_key=True, default=lambda: ObjectId())
...
La función lamba va a generar sus claves primarias para usted.