7

我有一个架构,其文档结构如下所示:

{ "_id" : ObjectId( "4f8dcb06ee21783d7400003c" ),
  "venue" : ObjectId( "4f8dcb06ee21783d7400003b" ),
  "name" : "Some event",
  "webite: "www.whatever.com",
  "attendees" : [
                    { "_id" : ObjectId( "4f8dfb06ee21783d7134503a" ), "firstName" : "Joe", "lastName" : "Blogs", "emailAddress" : "some@thing1.com" },
                    { "_id" : ObjectId( "4f8dfb06ee21783d7134503b" ), "firstName" : "John", "lastName" : "West", "emailAddress" : "some@thing2.com" }
                    { "_id" : ObjectId( "4f8dfb06ee21783d7134503c" ), "firstName" : "Simon", "lastName" : "Green", "emailAddress" : "some@thing3.com" }
                    { "_id" : ObjectId( "4f8dfb06ee21783d7134503d" ), "firstName" : "Harry", "lastName" : "Smith", "emailAddress" : "some@thing4.com" }
                ],
  "eventType" : "Party"
}

我有一个 CSV 文件,我想将其导入到与会者集合中...

使用mongoimport 可以吗? 我读到这个:Using mongoimport to read CSV into nested structure? 似乎答案可能是否定的……

由于这是一次性操作,我不介意是否必须将其导入“参加者”集合,然后运行另一个命令插入到我的文档中的参加者集合中?(目前只有一个事件文档....)

4

2 回答 2

7

你是对的,不幸的是答案是否定的。

Mongoimport 是一个非常简单的程序。(您可以在这里亲自查看:https ://github.com/mongodb/mongo/blob/master/src/mongo/tools/import.cpp )对于想要导入比 2- 更复杂的数据的用户字符串和数字的维度表,官方建议是编写一个自定义脚本,该脚本将读取您的输入文件并以您想要的格式创建文档。希望 import.cpp 文件能给你一些关于如何开始的想法。

于 2012-04-20T16:12:10.677 回答
7

这可能很晚,但对运行mongoDB > 4.x的未来用户很有用

您可以通过在名称上使用点运算符来使用 csv 文件导入子文档。

例如。如果您想要一个包含名为extra的子文档的文档,其中包含税收、状态和 created_at,那么您可以将您的字段命名为extra.taxes.auto(), extra.state.auto(), and extra.created_at.date(2006-01-02).

我被这个问题困住了,无法在线找到帮助,所以在这里发布。希望这可以帮助某人。

于 2018-12-26T10:47:32.660 回答