Ключ разделения MongoDB с полем DBRef?

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

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 в обычное поле в коллекции данных?


person j9dy    schedule 19.09.2016    source источник


Ответы (1)


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

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

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

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

person j9dy    schedule 26.09.2016