如何从MongoDB查询结果提取字段并跨数据库插入?技术咨询
问题解答
A)实现方向是否正确?
方向是对的:先从源数据库查询获取数据,再将数据写入目标数据库的文档,这个跨库数据同步的逻辑是合理的。
B)这种操作是否可行?
完全可行。只要你能正常连接两个数据库,且拥有对应的查询、更新权限,这类跨库的数据读写操作是日常开发中很常见的场景。
代码问题修正
你的核心问题是没有正确提取查询结果中的name值,反而错误地尝试用JSON.stringify处理数组,导致更新失败。
从你给出的console.log输出[ { companyName: "name" } ]可以看到,查询结果是一个包含单个对象的数组,要拿到目标值,直接访问数组元素的属性即可:
修改后的代码
try { let array = await cursor.toArray() console.log(array) // 从数组中提取具体的companyName值,用可选链避免数组为空时报错 const targetCompanyName = array[0]?.companyName; if (targetCompanyName) { const setCompany = await account.updateOne({ _id: ObjectId(userId) }, {$set: {"companyName": targetCompanyName}}) console.log("更新完成:", setCompany); } else { console.log("未获取到有效的公司名称"); } } catch(e){ console.error(`更新失败: ${e}`) }
错误原因说明
- 直接将整个数组赋值给
companyName,会把数组对象存入目标字段,而非你需要的字符串值 - 使用
JSON.stringify会把数组转成序列化后的字符串(比如"[{\"companyName\":\"name\"}]"),这显然不符合你想要的存储效果
内容的提问来源于stack exchange,提问作者Coolflare
相关产品推荐
相关产品推荐

