2016-09-19 36 views
1

我有一个包含DBRefs到根文档的集合。我有数以万计的文档链接到我的数据收集中的单个根文档。 这就是为什么我选择不嵌套根文档的数据。带DBRef字段的MongoDB分片密钥?

Data Collection: 
    _id : Auto-Created ID 
    ts : TimeStamp 
    field_1 : Whatever 
    ... 
    field_n : Whatever 
    root : DBRef 

"Root" Document Collection: 
    _id: Filename (unique) 
    field_1 : Whatever 
    ... 
    field_n : Whatever 

我觉得要分片我收藏的最好方法是使用领域tsroot._id作为复合键。

这可能吗?如果不是,最好的解决方案是什么?只需将root._id字段复制到数据收集中的正常字段?

回答

0

要回答我的问题,这是我发现:

显然,这是不可能的,因为所有的有DBREFS在随后的查询在客户端进行检索。

我已经摄取了一个新的字段sh_key,它可以在应用程序端导入数据时实时创建。新字段将保存“复合分片键”的值。

该值是root._id值的拼接,以及ts的小时,其形式为{root._id}:{hour of ts}