1

我正在使用 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 以及作为接收器的文件。

4

0 回答 0