获取一个文档时,使用Java客户端API从MarkLogic db提取数据可能依赖于其他文档

获取一个文档时,使用Java客户端API从MarkLogic db提取数据可能依赖于其他文档,marklogic,marklogic-8,Marklogic,Marklogic 8,我已经开始使用Java客户端API处理MarkLogic数据库。我有两个用例:- 提取同一集合中的所有文档,这些文档采用JSON格式,其中特定日期小于或等于特定日期 JSON的格式为 { "id" : "12345" "date" : "2012-12-12", "messageType" : "dummy_type", .... } 我可以使用以下代码执行此操作:- val queryMgr = client.newQueryManager(); var r

我已经开始使用Java客户端API处理MarkLogic数据库。我有两个用例:-

  • 提取同一集合中的所有文档,这些文档采用JSON格式,其中特定日期小于或等于特定日期 JSON的格式为

    {
        "id"  : "12345"
        "date" : "2012-12-12",
        "messageType" : "dummy_type",
        ....
    }
    
    我可以使用以下代码执行此操作:-

    val queryMgr = client.newQueryManager();
    var rawHandle: StringHandle = new StringHandle
    rawHandle.withFormat(Format.JSON).set("{\"$query\": {\"tradingDate\": { \"$le\":\""+ date + "\"}, \"$filtered\": true}}");
    var querydef: RawQueryByExampleDefinition = queryMgr.newRawQueryByExampleDefinition(rawHandle);  
    querydef.setCollections(collectionName);
    jsonDocMgr.search(querydef, 1); 
    
  • 现在数据库中有多个文档,其中多个文档是一个id的一部分,但消息类型不同。如中所示,我将A、B和C作为消息类型,它们的id都是12345。现在,根据类型C中的日期参数,我想决定是否需要提取所有文档(a、B和C),还是不应该提取

    有人能建议我是否可以创建javascript函数,并使用Java客户端API或任何其他东西或任何引用将其传递给MarkLogic db吗


  • 我建议你先看看。要使用它们,您需要按照说明通过或安装和测试转换,然后添加
    querydef.setResponseTransform(新的ServerTransform(“您的TransformName”)
    然后调用
    QueryManager.search(querydef,new SearchHandle())
    。您可以决定转换应为每个查询匹配返回的内容。

    你好,Sam,转换将有助于转换Marklogic数据库中的单个记录,因为转换函数中的内容参数相当于单个记录或文档。但是,这里一个文档依赖于另一个文档。我如何处理关心这个场景吗?Java客户端应用程序中是否提供了任何东西,我在其中创建了一个Java脚本文件,其中包含操作所有文档的函数,然后将Java脚本文件传递给Marklogic,然后数据库将根据Javascript文件中编写的逻辑呈现结果??