我有这段代码:
类成员(models.Model): objects = MongoDBManager()
fav_members = ListField(EmbeddedModelField('Member'))
def del_fav_with_pymongo(self, fav):
from pymongo import Connection
from django.conf import settings
conn = Connection(settings.DATABASES['default']['HOST'])
db = conn[settings.DATABASES['default']['NAME']]
db.base_member.update({"_id": ObjectId(self.id)}, {"$pull": {"fav_members": {"_id": ObjectId(fav.id)}}})
def del_fav_with_MongoDBManager(self, fav):
Member.objects.raw_update({"_id": ObjectId(self.id)}, {"$pull": {"fav_members": {"_id": ObjectId(fav.id)}}})
del_fav_with_pymongo()方法和del_fav_with_MongoDBManager都没有提取收藏夹。
请有人回答???
答案 0 :(得分:0)
你发布的mongo查询是正确的 - 我的猜测是因为嵌入的对象没有由mongo添加的_id字段,给予pull的查询哈希不匹配任何内容。
你能使用fav的特定属性吗?
答案 1 :(得分:0)
如果查看数据库,您将看到EmbeddedModelField实例未自动获得_id。使用fav
的特定属性指定要删除的内容,或使用ListField中的位置索引。