当前位置: 首页 > 知识库问答 >
问题:

在Talend工具的mongo数组元素中插入ObjectID

壤驷康裕
2023-03-14

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

我们需要以下输出:

{

“_id”:“12243”,

“name”:“ABCD”,

“城市”:“XYZ”,

请求”:[

{

“\u id”:ObjectId(“5efdcf15ea9355c419fc9699”),//如何使用Mongo中的talend工具生成此ObjectId

“type”:“部门”,

“价值”:“科学”

},

{

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

“type”:“部门”,

“value”:“商业”

}

]

}

共有1个答案

燕元明
2023-03-14

根据您的需要,我假设手动生成ObjectId应该足够了。我将建议使用:

  • 标准MongoDB BSON java库(推荐)
  • 或者在遵循官方MongoDB约定后,自己生成此元素:https://docs.mongodb.com/manual/reference/bson-types/#objectid

推荐的方法意味着您必须将MongoDB BSONJava库添加到您的Talend项目中,当然是通过将其包含为JAR(参见下面的链接)。我不会解释如何(-

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

相关材料:

  • https://docs.mongodb.com/manual/reference/method/ObjectId/
  • 如何在mongodb中生成唯一的对象id
  • https://mongodb.github.io/mongo-java-driver/4.0/bson/installation-guide/
  • https://mvnrepository.com/artifact/org.mongodb/bson
 类似资料:
  • 我想根据文档id和元素id向上插入数组中的元素。当前,只有当数组中的元素已准备就绪时,它才起作用(更新有效,插入无效)。 因此,这些集合: 收到此请求: 将给出此ok结果: 如何使相同的请求适用于这些初始集合: 或 如何使upert工作?upert仅适用于整个文档吗?目前,我面临这个错误: 位置运算符未从查询中找到所需的匹配项。 谢谢

  • 更新:这里的问题是本机MongoDB驱动程序需要与Mongoose不同格式的objectID。我需要做的不是{_id:story_id},而是{_id:new mongoose.types.objectid(story_id)}。它只返回这两个字段的原因是它正在创建一个带有{_id:story_id}的新文档,而不是更新{_id:{$oid:story_id}}的文档。然而,我最初使用本地驱动程序

  • 我在将字符串数组插入mongo DB时遇到问题。在数组的特定大小之后,驱动程序挂起-不会抛出异常(超时或错误)。当我缩短长度时,一切正常。有人能解释这种奇怪的行为吗?很抱歉这个newbee问题,但我找不到一个现有的问题。 Mongo DB版本 非工作文档

  • 本文向大家介绍js中数组插入、删除元素操作的方法,包括了js中数组插入、删除元素操作的方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 通过上面的函数,可以处理上移和下移的动作 定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组。 语法 参数 描述 index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置

  • 问题内容: 假设我们有两个数组: 现在,我想在每个数组的第三个元素之后插入。我该怎么做? 问题答案: 可以用来提取数组的部分,联合数组运算符()可以重新组合部分。 这个例子: 给出:

  • 问题内容: 必须确定新对象在排序数组中的插入位置。 在纯Swift中,最好的高性能方法是什么? 类似于以下内容: 我想找出正确的位置并插入元素,而不是追加新元素然后对数组进行排序: 问题答案: 这是在Swift中使用二进制搜索的一种可能的实现方式(来自 http://rosettacode.org/wiki/Binary_search#Swift并进行了一些修改): 如同假定数组是相对于比较器排序