我试图将聚合物与mongoengine一起使用。此外,找出它是如何工作的很有挑战性(因为文档中没有任何内容),我已经取得了一些进展。
但我无法匹配主键:
from mongoengine import *
connect('test')
class User(Document):
username = StringField()
def match_test_username(self):
pipeline = [{ "$match": {"username": self.username} }]
return User.objects.aggregate(*pipeline)
def match_test_id(self):
pipeline = [{ "$match": {"id": self.id} }]
return User.objects.aggregate(*pipeline)
mary = User(username="mary")
mary.save()
mary.reload()
agg_username = mary.match_test_username
for doc in agg_username():
print("match_test_username:", doc)
agg_id = mary.match_test_id
for doc in agg_id():
print("match_test_id:", doc)
如果你运行这个,匹配就是用于用户名(match_test_username),但是我无法使用主键,我已经尝试过键名:_id,pk,id。< / p>
我错了什么?
有没有关于此的文档?我发现的只有:Flask-MongoEngine & PyMongo Aggregation Query非常有用。
还有什么可以帮助,是否有更好的方式(&#34; pythonic方式&#34;)来迭代调查结果?
提前谢谢!
答案 0 :(得分:0)
您应该在查询中使用ID作为ObjectId
。所以你应该这样做:
pipeline = [{ "$match": {"_id": ObjectId(self.id)} }]
return User.objects.aggregate(*pipeline)