while
我上面有这些属性的文件。
我想按" PublicationDate"过滤...
我试过" Fields" &安培; "场范围索引"和"元素范围索引",但是我没有找到指定此属性的语法(XML或JSON)?
有谁知道这种语法?
亲切的问候
答案 0 :(得分:2)
除了提供示例的答案之外,请注意, http://marklogic.com/xdmp/property publicationDate NOT >在你的例子中..所以你的索引配置应该具有每个元素定义的json / basic的命名空间,并且作为xs引用它:QName不应该引用" prop:" ..
试图弄清楚你的索引是否正确?您始终可以从查询控制台尝试SELECT * FROM
tbl_name
WHERE CONCAT(YEAR(CURDATE()),DATE_FORMAT(b_day,'-%m-%d')) = $date
,并在代码中使用它之前验证您的索引是否符合预期。
答案 1 :(得分:1)
经过多次试验,这似乎工作得很好(MarkLogic 8.0-3):
没有" Field" (其中wm
为http://marklogic.com/xdmp/json/basic):
qb.propertiesFragment(qb.value(qb.element(wm,'publicationDate'),'2015-03-30'))
没问题,但以下产生相同的错误(无元素范围索引......)
qb.propertiesFragment(qb.range(qb.element(wm,'publicationDate'), '>=' ,'2015-03-01'))
使用" Field"
(wm:publicationDate
,在路径名称空间中有wm
,之前没有/vm:properties/
...)以下似乎工作正常: - )))
qb.propertiesFragment(qb.value(qb.field("properties_publicationDate"),'2015-03-30'))
qb.propertiesFragment(qb.range(qb.field("properties_publicationDate"), '>=' ,'2015-03-01'))
答案 2 :(得分:0)
我认为您正在寻找cts:properties-query
:
cts:properties-query(
cts:element-range-query(
xs:QName("my:publicationDate"),">",
current-dateTime() - xs:dayTimeDuration("P1D"))))
此示例假设prop:publicationDate
上的范围索引,并且还注意这假设MarkLogic 7或更早版本。在MarkLogic 8中,此查询的名称似乎已更改为cts:properties-fragment-query
。
在node.js中,使用查询构建器,您可以实现类似的功能:
db.documents.query(
qb.where(
qb.fragmentScope('properties'),
qb.propertiesFragment(
qb.range('publicationDate', '>', ... )
)
)
)