cấu trúc:Làm thế nào để loại bỏ một mục khỏi danh sách (ListField) theo id trong MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
tôi cần loại bỏ các id = 8 mục, cảm ơn.
cấu trúc:Làm thế nào để loại bỏ một mục khỏi danh sách (ListField) theo id trong MongoEngine?
{title: 'test', comments: [{id:1, title: ''}, {id: 8, title: ''}]}
tôi cần loại bỏ các id = 8 mục, cảm ơn.
Hi bạn có thể kéo các mục từ một mảng:
https://github.com/hmarr/mongoengine/blob/master/tests/queryset.py#L1374
Xem $ pull: http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
Bạn cần phải sử dụng $ pull điều hành ở đây:
http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull
db.collection.update({'title':'test'},{$pull : { 'comments' : { 'id' : 8 }});
Đây là một ví dụ về toán tử kéo, sử dụng flask_mongoengine và giả sử lớp đối tượng cha được gọi là Blog, và các chú thích là EmbeddedDocuments bên trong Blog.
Blog.objects(id=blog_id).update_one(pull__comments___id=comment_id)
Lưu ý dấu gạch dưới ba trong id nhận xét. Điều này là do nếu bạn muốn khóa chính trên Nhận xét, bạn cần phải thêm một khóa vào khai báo mô hình của mình như sau:
class Comment(db.EmbeddedDocument):
_id = db.ObjectIdField(primary_key=True, default=lambda: ObjectId())
...
Chức năng lamba sẽ tạo khóa chính cho bạn.