[英]How to autogenerate new _id in target table when migrating a DocumentDB table using AWS DMS to another DocumentDB table
我有一個 AWS DocumentDB,其模式my-schema
和名為my-table
,其結構類似於
{
"_id": { "FIELD_1" : "001", "FIELD_2" : "A1" },
"FIELD_1": "001",
"FILED_2": "A1",
.
.
.
}
如您所見, _id
包含FIELD_1
& FIELD_2
。 這兩個字段的組合對於所有記錄都是唯一的。 這兩個字段形成了原始 oracle 數據庫中的復合主鍵,這就是為什么當我們從 oracle 遷移到 DocumentDB 時,AWS DMS 選擇將其放入_id
中。
現在的問題是,我們需要_id
為 mongodb ObjectId 而不是嵌套的 json。
我試過的是:
my-schema
中)。my-new-schema
和相同的表名my-table
創建目標端點。 但它仍然將相同的嵌套_id
復制到目標表中。 我已經嘗試了文檔元數據模式和表元數據模式。 在表元數據模式下,它甚至不傳輸數據,因為在將 _id 扁平化為 _id.FIELD_1 和 _id.FIELD_2 之后。 DMS 拋出異常“文檔不能有”。 在字段名稱中”
我知道我可以使用代碼輕松地做到這一點,但如果可以使用 DMS 以某種方式實現我的目標,我會更願意這樣做。
或者我們可以直接使用 mongodb 命令來實現嗎?
不確定 DMS,但我認為您可以使用帶有 $out 階段的聚合查詢來執行此操作。 投影你需要的字段,排除_id,新集合中的文檔將使用通常的ObjectId插入。 是這樣的:
db.collection.aggregate([
{$project:
{_id:0,
FIELD_1:1,
FIELD_2:1
}},
{$out: 'new_collection'}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.