【问题标题】:Marklogic|NodeJS API - Query on a specific categorie "properties"Marklogic|NodeJS API - 查询特定类别的“属性”
【发布时间】:2016-08-01 09:20:52
【问题描述】:

我的数据库中有一个 json 文档,如下所示:

{
"uri" : "/me/myself/and/bd1e0f91656bfc713eb6560eeaad7ad1.json",
"category" : "content",
"format" : "json",
"versionId" : "14697362595356370",
"contentType" : "application/json",
"contentLength" : "1938",
"collections" : ["http://me.myself.com/collectionA"],
"properties" : {
    "relatives" : ["/me/myself/and/B.json", "/me/myself/and/A.json"]
},
"content":{}

}

我正在尝试获取在属性中具有特定关系的所有文档:

qb.where(
   qb.scope(
    qb.property('relatives'),
    qb.word("/me/myself/and/B.json"),
    qb.fragmentScope('properties')
))

但我不断收到大量不适合查询的文档。

知道如何使用 Marklogic NodeJS API 做到这一点吗?

【问题讨论】:

    标签: node.js marklogic nosql


    【解决方案1】:

    我看到两件事看起来可能是问题。第一个是qb.fragmentScope('properties')。这告诉 MarkLogic 查看document's properties,而不是文档的内容。鉴于您的示例 JSON 文档,这看起来不像您的意思。

    第二个问题是单词查询——“/me/myself/and/B.json”很可能被分解成它的组成词(me、myself 和 B、json),然后匹配其他文件。您想完全匹配那里的内容,因此请尝试值查询:

    qb.where(
      qb.scope(
        qb.properties('properties'),
        qb.value('relatives', '/me/myself/and/B.json')
      )
    )
    

    请注意,qb.scopeqb.properties 将限制搜索只匹配出现在 relativesproperties JSON 属性下的值。这与上面提出的 JSON 属性与内容点不同。

    【讨论】:

    • 我实际上希望在文档的属性中进行查询。正如您在我的示例示例中看到的那样,内容是空的。
    【解决方案2】:
    qb.where(
      qb.propertiesFragment(
        qb.term('/me/myself/and/B.json')
      )
    )
    

    这对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多