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

时间:2017-01-25 11:10:16

标签: marklogic marklogic-8

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

  1. 提取同一集合中的所有文档,这些文档的格式为JSON,其中特定日期小于或等于特定日期。
  2. 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); 
    
    1. 现在我在数据库中有多个文档,其中多个文档是一个id的一部分但是消息类型不同。就像在我有A,B和C作为消息类型,所有的id都是12345.现在根据类型C中的日期参数,我想决定是否需要获取所有文档(A,B和C)或者不应该被拿走。

      有人可以建议我是否可以创建javascript函数并使用Java Client API或任何其他内容或任何引用将其传递给MarkLogic数据库?

1 个答案:

答案 0 :(得分:1)

我建议您先查看transforming search results。要使用它们,您需要按照说明通过RESTJava安装和测试转换,然后添加querydef.setResponseTransform(new ServerTransform("yourTransformName"),然后调用QueryManager.search(querydef, new SearchHandle())。您可以决定每次查询匹配应返回的转换。