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

「gt」キーの値が単一の文字列トークンになるように collection_filters を変更すると (以下を参照)、不正な形式のエラーは消えますが、ドキュメントは取得されません。

'{ "mycollection": { "createdDate": { "$gt": "new Date(Date.now() - 24*60*60 * 1000)" } }}',

クエリの方法に根本的な問題があるかどうかを確認するために、単純な文字列フィルターを試してみましたが、うまくいきました。

"collection_filters": '{ "articles": { "createdBy": "author name" }}',

createdDate フィルターを渡すさまざまな方法を試しましたが、不正な形式のエラーが発生するか、データがありません。ただし、mongo シェルで同じフィルターを使用すると、期待どおりの出力が得られます。ここで質問する前に、ES と file as sink を試したことに注意してください。

4

0 に答える 0