Java 8 - Как отсортировать список документов BSON по нескольким полям? - PullRequest
0 голосов
/ 05 февраля 2019

В Java у меня есть List<Document>, где Document - документ bson.Этот список заполняется из mongoDB.

Класс документа - это не что иное, как LinkedHashMap<String, Object>

В нашем случае мы храним документы json (из Mongo) в этом классе документа.

Пример : Документ является представлением пары ключ-значение следующего json.Обратите внимание, что структура json и вложенных уровней может варьироваться для каждого документа.

{
    "assetType" : "EQUITY", 
    "cusip" : "g5asds6",    
    "symbol" : "BqrF",        
    "pricing" : {
        "eodAskPrice" : 4.168816,        
        "eodBidPrice" : 4.164947,
        "eodPriceCurrency" : "USD",
        "eodPriceCurrencyDesc" : "US Dollar",
        "prevEodAskPrice" : 4.079388,
        "prevEodBidPrice" : 4.058687,        
    },
    "reference" : {                
        "adrSponsored" : false,
        "countryIncorp" : "LU",
        "countryIncorpDesc" : "LUXEMBOURG",        
        "dtc" : {
            "bookEntryDrsFlag" : false,
            "bookEntryDrsFlagDesc" : "Ineligible",
            "specialDepReasonType" : "REG",
            "specialDepReasonTypeDesc" : "Regular"
        },
        "estimatedAnnualDividend" : 0.0,
        "exchangeCode" : "%",
        "exchangeCodeDesc" : "Other-OTC",
    }
}

У меня вопрос , как мне написать какой-то пользовательский компаратор, так что сортируйте мой списокна основе полей, указанных пользователем?

Обратите внимание, что Я не могу создать методы получения для этих полей.

Один пользователь может указать сортировку по ["символу", "exchangeCode"] и другие могут указывать ["cusip", reference.countryIncorp "," countryIncorpDesc ​​"] *

Также обратите внимание, что я не могу выполнить эту сортировку в Mongo. Так как данные доступны в памяти,Я должен отсортировать это в памяти.

Любая помощь очень ценится!

...