从具有重复字段值的查询中排除文档

时间:2015-04-25 10:58:57

标签: python mongodb mongoengine

你可以帮帮我吗? 如何使用mongoengine从具有相同值的字段中排除查询集文档?

假设我有模特:

class A(Document):
    a = IntField()
    b = IntField()
    c = IntField()
db中的

文档:

{'a':1, 'b':1, 'c':1 }
{'a':1, 'b':1, 'c':2 }
{'a':1, 'b':2, 'c':1 }

查询:A.objects() 我得到所有文件

如何查询获取文档:

{'a':1, 'b':1, 'c':1 }
{'a':1, 'b':2, 'c':1 }

如果查询集包含具有相同值的文档,则应排除文档' a'和' b'一起。 此类文档只应包含在查询集中一次。

1 个答案:

答案 0 :(得分:0)

一种方法是使用聚合,如下所示:

pipe = {"$group": {"_id": {"a": "$a", "b": "$b", "c": "$c"}}}
A.objects.aggregate(pipeline=pipe)

另一种方法是查询除_id之外的所有字段,然后从结果中计算出唯一记录。