从具有重复字段值的查询中排除文档
Exclude documents from query with duplicate fields value
你能帮帮我吗?
如何使用 mongoengine 从查询集文档中排除具有相同值的字段?
假设,我有模型:
class A(Document):
a = IntField()
b = IntField()
c = IntField()
数据库中的文档:
{'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' 的文档在一起。
这样的文档应该只包含在查询集中一次。
一种方法是使用 聚合,像这样:
pipe = {"$group": {"_id": {"a": "$a", "b": "$b", "c": "$c"}}}
A.objects.aggregate(pipeline=pipe)
另一种方式是查询除_id
以外的所有字段,然后从结果中计算出唯一记录。
你能帮帮我吗? 如何使用 mongoengine 从查询集文档中排除具有相同值的字段?
假设,我有模型:
class A(Document):
a = IntField()
b = IntField()
c = IntField()
数据库中的文档:
{'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' 的文档在一起。 这样的文档应该只包含在查询集中一次。
一种方法是使用 聚合,像这样:
pipe = {"$group": {"_id": {"a": "$a", "b": "$b", "c": "$c"}}}
A.objects.aggregate(pipeline=pipe)
另一种方式是查询除_id
以外的所有字段,然后从结果中计算出唯一记录。