collection NodeJS 中的 Marklogic QueryByExample
Marklogic QueryByExample in collection NodeJS
TLDR
有没有办法在 NodeJS 中将 queryByExample 限制为 collection?
遇到的问题
我有一个包含一些可选字段的复杂查询(即有时会省略一些搜索字段)。所以我需要动态创建一个查询,例如在 JSON。 QueryByExample 似乎是在这里使用的正确工具,因为它让我可以灵活地传递 JSON。但是我的问题是我想将搜索限制在一个 collection 或目录中。
例如我希望有类似
的东西
searchJSON = {
title: { $word: "test" },
description: { $word: "desc" }
};
//query
db.documents.query(qb.where(
qb.collection("collectionName"),
qb.byExample(searchJSON)
)).result()...
在这种情况下 searchJSON
可以动态构建,例如有时可能会在搜索中省略标题。
这不起作用,因为查询构建器只允许 queryByExample 成为唯一的查询。但我反而想构建一个仅限于 collection 或目录的动态搜索查询。
目前,我认为您必须使用 QueryBuilder 来表达查询,而不是使用
的 Query By Example
qb.and([
qb.collection('collectionName'),
qb.word('title', 'test'),
qb.word('description', 'desc')
])
见http://docs.marklogic.com/jsdoc/queryBuilder.html#word
也就是说,Node.js API 应该可以根据 MarkLogic 9.0-2
中的修复放宽该限制
上提交问题
TLDR
有没有办法在 NodeJS 中将 queryByExample 限制为 collection?
遇到的问题
我有一个包含一些可选字段的复杂查询(即有时会省略一些搜索字段)。所以我需要动态创建一个查询,例如在 JSON。 QueryByExample 似乎是在这里使用的正确工具,因为它让我可以灵活地传递 JSON。但是我的问题是我想将搜索限制在一个 collection 或目录中。
例如我希望有类似
的东西searchJSON = {
title: { $word: "test" },
description: { $word: "desc" }
};
//query
db.documents.query(qb.where(
qb.collection("collectionName"),
qb.byExample(searchJSON)
)).result()...
在这种情况下 searchJSON
可以动态构建,例如有时可能会在搜索中省略标题。
这不起作用,因为查询构建器只允许 queryByExample 成为唯一的查询。但我反而想构建一个仅限于 collection 或目录的动态搜索查询。
目前,我认为您必须使用 QueryBuilder 来表达查询,而不是使用
的 Query By Exampleqb.and([
qb.collection('collectionName'),
qb.word('title', 'test'),
qb.word('description', 'desc')
])
见http://docs.marklogic.com/jsdoc/queryBuilder.html#word
也就是说,Node.js API 应该可以根据 MarkLogic 9.0-2
中的修复放宽该限制 上提交问题