如何使用等效的SELECT DISTINCT语句查询Azure DocumentDB

6

DocumentDb不支持DISTINCT语句。我在DocumentDB中有数千个文档,其结构如下:

{
    "type" : "type1",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
}

我该如何查询集合并获得以下结果:
{
    "type" : "type1"
},{
    "type" : "type2"
}

您想从集合中仅返回“type”属性还是不同的类型? - Gaurav Mantri
我希望查询返回不同的类型。 - aludvigsen
3
简短回答是:你无法以高效的方式获得它。长一点的回答是:你可以创建一个在插入时创建包含不同类型的集合的触发器,另一个在删除时检查此文档是否是该类型的最后一个以进行删除。但这只是一个解决方法。你为什么需要这个不同的类型?是用于建议、过滤或其他用途? - b2zw2a
谢谢@plentysmart,也许你的解决方法是我能得到的最接近的。我想要这个的原因是:我有150-200种文档类型,并希望显示某种状态列表,表示集合中可用的类型。通过可用,我指的是已经在集合中的类型。 - aludvigsen
这个解决方法远非完美,而且有一些限制。由于事务范围(单个集合),您必须在同一个DocumentDB集合中保留您不同类型的“collection”,这可能会变得混乱。如果您不需要强一致性,我可能会选择一些外部“索引”,并通过域事件(文档创建/修改/删除)将其与之同步。 - b2zw2a
1
请投票支持此功能被包含在未来计划中; http://feedback.azure.com/forums/263030-documentdb/suggestions/6719531-provide-support-for-distinct - Ryan CrawCour
1个回答

7

Azure DocumentDB目前不支持DISTINCT

请在DocumentDB反馈论坛上发表您的意见并投票支持此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接