MarkLogic :在特定数据库中创建时间集合

MarkLogic : create temporal collection in a specific database

MarkLogic 版本:9.0-6.2

我的要求是在 FINAL 数据库上启用双时态,因此我创建了所需的字段范围索引和轴。最后,我创建了一个时间集合,如下所示(在查询控制台中执行,data-hub-FINAL 作为选定的数据库)

const temporal = require("/MarkLogic/temporal.xqy");
const collectionResult = temporal.collectionCreate(
"customer", "system-axes", "valid-axes");

但是,我注意到时间集合的范围也扩展到了 STAGING DB。当我尝试通过传递 'customer' 集合在 STAGING DB 上执行常规 xdmp.documentInsert 时,出现错误,我无法传递集合名称,因为客户集合是临时的。

我通过使用不同的集合名称 (customerStaging) 解决了问题,但这是 temporal.collectionCreate 的预期行为吗?有没有一种方法可以将临时集合限制为一个数据库,以便我可以在其他数据库中使用与非临时集合相同的集合?

求推荐。

临时设置存储在附加到内容数据库的架构数据库中。听起来您没有使用最新的 DHF,它有一个单独的最终模式和一个单独的暂存模式数据库。你最好升级到最新的才能使用这个。

或者,您可以考虑使用通用 uni-temporal/bi-temporal 集合和单独的逻辑集合,例如 'customer'。一个文档可以有多个集合。

HTH!