我正在使用 Compose Transporter 将数据从 DocumentDB 同步到 AWS 中的 ElasticSearch 实例。一次同步后,我在 pipeline.js 中添加了以下 collection_filters 以每天同步增量数据:
// pipeline.js
var source = mongodb({
"uri": "mongodb <URI>"
"ssl": true,
"collection_filters": '{ "mycollection": { "createdDate": { "$gt": new Date(Date.now() - 24*60*60*1000) } }}',
})
var sink = file({
"uri": "file://mongo_dump.json"
})
t.Source("source", source, "^mycollection$").Save("sink", sink, "/.*/")
我收到以下错误:
$ transporter run pipeline.js
panic: malformed collection_filters [recovered]
panic: Panic at 32: malformed collection_filters [recovered]
panic: Panic at 32: malformed collection_filters
goroutine 1 [running]:
github.com/compose/transporter/vendor/github.com/dop251/goja.(*Runtime).RunProgram.func1(0xc420101d98)
/Users/JP/gocode/src/github.com/compose/transporter/vendor/github.com/dop251/goja/runtime.go:779 +0x98
当我更改 collection_filters 使“gt”键的值是单个字符串标记(见下文)时,格式错误的错误消失了,但它不获取任何文档:
'{ "mycollection": { "createdDate": { "$gt": "new Date(Date.now() - 24*60*60 * 1000)" } }}',
要检查我的查询方式是否存在根本问题,尝试了简单的字符串过滤器,效果很好:
"collection_filters": '{ "articles": { "createdBy": "author name" }}',
我尝试了各种方法来传递 createdDate 过滤器,但要么收到格式错误的错误,要么没有数据。然而,mongo shell 上的相同过滤器给了我预期的输出。请注意,在此处询问之前,我尝试使用 ES 以及作为接收器的文件。