【问题标题】:Insert ObjectID in to mongo array elements in Talend tool在 Talend 工具中将 ObjectID 插入到 mongo 数组元素中
【发布时间】:2020-10-28 03:49:49
【问题描述】:

我们正在使用 Talend 工具将数据从 Oracle 迁移到 Mongo DB,我们需要将对象 ID 添加到数组中的每个对象。我们曾尝试使用具有固定值的属性@type 作为 ObjectId,但没有成功。

我们需要如下输出:

{

"_id":"12243",

“名称”:“ABCD”,

"城市":"XYZ",

“请求”:[

{

"_id" : ObjectId("5efdcf15ea9355c419fc9699"), // Mongo中如何使用talend工具生成这个ObjectId

“类型”:“部门”,

“价值”:“科学”

},

{

"_id" : ObjectId("K279kkqasj8ac023878hjc"), // Mongo中如何使用talend工具生成这个ObjectId

“类型”:“部门”,

“价值”:“商业”

}

]

}

【问题讨论】:

  • 嗨,您能解释一下为什么要手动添加此_id,尤其是在“嵌入式​​”数组中吗?这对我来说没有多大意义。但也许你可以提供更多信息来理解。
  • 您好,我们想使用 talend 工具进行数据迁移。我们的要求是为 requests 嵌入数组中的每个对象提供标识 _id 值。所以我们想在 Mongo 中插入 _id 值。您能否告诉我们如何使用 talend 工具来实现。我理解对于主文档,如果我们不分配任何 _id 值,那么默认情况下 mongo 将分配 objectId 但在这种情况下,我们需要将它放在 embedded array跨度>

标签: mongodb talend objectid


【解决方案1】:

根据您的需要,我认为手动生成ObjectId 就足够了。我会建议使用:

推荐的方式意味着您必须将 MongoDB BSON Java 库添加到您的 Talend 项目中,当然是通过将其作为 JAR 包含(参见下面的链接)。我不会解释如何(-> 超出范围)。然后只需执行以下操作即可将正确的_id 添加到您的嵌入元素:

ObjectId id = new ObjectId();
// or
ObjectId id = ObjectId.get();

相关资料:

【讨论】:

  • 您好,感谢您的回复。我已经使用了您建议的逻辑,但我现在几乎没有问题。 1. 为所有嵌入的数组元素生成的对象 ID 相同,但应该不同。 2. 在输出中,_id 以字符串的形式出现,但它应该具有 objectId 数据类型现在:它以“_id”:“123445324532”的形式出现,但它应该是“_id”:ObjectId(“1233423”),类型为 ObjectId跨度>
  • 你用什么样的逻辑来解决问题(1)?您是否正确地为每个子项目制作了新的 ObjectId()? Talend 输入和输出 shemas 是什么样的?我们需要更多信息来解决问题 (2),因为 Talend 可能需要将 ObjectId 处理为字符串或对象,反之亦然。此外,您实际上没有解释为什么您真的需要在数组中嵌套 ObjectId。
猜你喜欢
  • 2018-07-02
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 2016-07-06
  • 1970-01-01
相关资源
最近更新 更多