2016-09-19 3 views
1

У меня есть коллекция, которая содержит DBRefs для корневого документа. У меня есть десятки тысяч документов, которые ссылаются на один корневой документ в моей коллекции данных. Вот почему я решил не вставлять данные корневого документа.MongoDB Sharding Key с полем DBRef?

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._id в качестве ключа соединения.

Возможно ли это? Если нет, то какое наилучшее решение? Просто скопируйте поле root._id в обычное поле в коллекции данных?

ответ

0

Чтобы ответить на мой собственный вопрос, вот что я выяснил:

Видимо, это не представляется возможным, потому что весь DBRefs должен быть восстановлен на стороне клиента в последующем запросе.

Я получил новое поле sh_key, которое создается «на лету» при импорте данных со стороны приложения. Новое поле будет содержать значение «составного ключа осколки».

Значение представляет собой конкатенацию значения root._id, а также час ts по способу {root._id}:{hour of ts}.