gpt4 book ai didi

mongodb - 如何使用 mongoimport 从 CSV 文件导入 Mongodb ObjectId?

转载 作者:行者123 更新时间:2023-12-01 23:24:03 24 4
gpt4 key购买 nike

我正在努力使用 mongoimport 从 CSV 文件导入 Mongodb 的 ObjectId:

我尝试了所有我能想到的组合和转义方法,但无法从 CSV 正确导入 ObjectId。

首先,我尝试将从 MongoDB 导出的内容准确导入到 CSV。我使用的是 MongoDB 2.2.1。

我刚刚创建了两个集合并在另一个文档中引用了一个文档的 _id:

use yourdb
db.createCollection("student")
db.createCollection("class")
db.student.insert({"name":"Peter"})
db.student.find() returns { "_id" : ObjectId("5143af326d44e1ceb372121d"), "name" : "Peter" }
db.class.insert({"student_id": ObjectId("5143af326d44e1ceb372121d"),"name":"II-4"})

然后我在 shell 中使用 mongoexport 命令:

mongoexport -h localhost:3002 -d yourdb -c classes --csv -f student_id,name > export.txt

生成的 CSV 如下所示:

student_id,name
ObjectID(5143af326d44e1ceb372121d),"II-4"

然后我使用以下方法导入生成的 CSV:

mongoimport -h localhost:3002 -d yourdb -c class --type csv --file export.txt --headerline

查询类集合现在返回:

db.class.find()
{ "_id" : ObjectId("5143afc66d44e1ceb372121e"), "student_id" : ObjectId("5143af326d44e1ceb372121d"), "name" : "II-4" }
{ "_id" : ObjectId("5143b44788df173ba096550e"), "student_id" : "ObjectID(5143af326d44e1ceb372121d)", "name" : "II-4" }

您可以注意到第二个文档中的 Student_id 字段实际上是一个字符串,而不是 MongoDB ObjectId。

我错了,或者 Mongo 无法导入它自己导出的 CSV?

最佳答案

对于遇到此问题并尝试从 JSON 插入 ObjectId 的任何人来说,只需对现有数据进行一些修改即可实现这一点。

替换:

{ "_id" : ObjectId("5143afc66d44e1ceb372121e"),
"student_id" : ObjectId("5143af326d44e1ceb372121d"),
"name" : "II-4" }

与:

{ "_id" : {"$oid":"5143afc66d44e1ceb372121e"},
"student_id" : {"$oid":"5143af326d44e1ceb372121d"},
"name" : "II-4" }

只需使用正则表达式来替换 ObjectId 换行即可。

关于mongodb - 如何使用 mongoimport 从 CSV 文件导入 Mongodb ObjectId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15329309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com