Marklogic | NodeJS API - 查询特定类别“属性”

时间:2016-08-01 09:20:53

标签: node.js marklogic nosql

我的数据库中有一个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执行此操作吗?

2 个答案:

答案 0 :(得分:1)

我看到两件看起来可能有问题的事情。第一个是seek。这告诉MarkLogic查看document's properties,而不是文档的内容。考虑到您的示例JSON文档,这看起来不像您的意思。

第二个问题是单词查询 - “/me/myself/and/B.json”可能被分解为其组成单词(我,我自己,和B,json),然后匹配其他文件。你想要完全匹配那里,所以尝试一个值查询:

qb.fragmentScope('properties')

请注意,qb.where( qb.scope( qb.properties('properties'), qb.value('relatives', '/me/myself/and/B.json') ) ) qb.scope会将搜索限制为仅在qb.properties JSON属性下的relatives中显示的值匹配。这与上面提到的JSON属性与内容点不同。

答案 1 :(得分:0)

qb.where(
  qb.propertiesFragment(
    qb.term('/me/myself/and/B.json')
  )
)

这对我有用。