Java 8-如何按多个字段对bson文档列表进行排序?

时间:2019-02-05 17:11:00

标签: java mongodb sorting document bson

在Java中,我有一个List<Document>,其中Document是bson文档。此列表从mongoDB中填充。

文档类不过是LinkedHashMap<String, Object>

在我们的示例中,我们将json文档(来自Mongo)存储到此Document类中。

示例:文档是以下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",
    }
}

我的问题是,我该如何编写某种自定义比较器,以便根据用户指定的字段对列表进行排序?

请注意,我无法为这些字段创建吸气剂

一个用户可以指定排序方式[“ symbol”,“ exchangeCode”],另一个用户可以指定[“ cusip”,reference.countryIncorp“,” countryIncorpDesc“]

还请注意,我无法在Mongo中进行这种排序。由于数据在内存中可用,因此我必须在内存中对此数据进行排序。

非常感谢您的帮助!

0 个答案:

没有答案