带DBRef字段的MongoDB分片键?
我有一个集合,其中包含根文档的DBREF。我有数以万计的文档链接到数据集中的单个根文档。 这就是为什么我选择不嵌套根文档的数据带DBRef字段的MongoDB分片键?,mongodb,mongodb-query,data-collection,Mongodb,Mongodb Query,Data Collection,我有一个集合,其中包含根文档的DBREF。我有数以万计的文档链接到数据集中的单个根文档。 这就是为什么我选择不嵌套根文档的数据 Data Collection: _id : Auto-Created ID ts : TimeStamp field_1 : Whatever ... field_n : Whatever root : DBRef "Root" Document Collection: _id: Filename (uni
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
我认为分割我的收藏的最好方法是使用ts
和root.\u id
字段作为复合键
可能吗?如果不是,最好的解决方案是什么?只需将
root.\u id
字段复制到数据采集中的正常字段中即可 为了回答我自己的问题,以下是我的发现:
显然,这是不可能的,因为在后续查询中必须在客户端检索所有DBREF
我接受了一个新字段sh_key
,它是在应用程序端导入数据时动态创建的。新字段将保存“复合分片键”的值
该值是根的连接。_id值以及
ts的小时数,以{root._id}:{hour of ts}
的方式,回答我自己的问题,下面是我发现的:
显然,这是不可能的,因为在后续查询中必须在客户端检索所有DBREF
我接受了一个新字段sh_key
,它是在应用程序端导入数据时动态创建的。新字段将保存“复合分片键”的值
该值是root.\u id
值以及ts
的小时数的串联,其方式为{root.\u id}:{hour of ts}