Mongo 导入将所有数据保存在单个对象下
Mongo import saves all data under a single object
我 运行 使用 mongo 导入命令导入我的 json 文件,但所有数据都保存在一个对象下。
mongoimport -d DB NAME -c COLLECTION NAME --type json --file FILE PATH --host MY MONGO LAB HOST --port 27892 -u MYUSER -p MYPASSWORD
但现在当我在 mongorobot
中看到数据库时
JSON
{
"-Kbr7KouYOL_a9NIAyPV" : {
"correctas" : [ 1 ],
"creator_name" : "kk",
"game_name" : "Elrubius",
"jugado" : 62,
"opciones1" : [ "Por usar una pistola falsa" ],
"opciones2" : [ "Por matar" ],
"opciones3" : [ "Por robar" ],
"opciones4" : [ "Por estar tomando alcol" ],
"preguntas" : [ "Elrubius porque fue detenido" ],
"premium" : false
},
"-Kbr8RJMSCv95m6TS4Of" : {
"correctas" : [ 2 ],
"creator_name" : "CRIATURITA",
"game_name" : "ELRUBIOSOMG",
"jugado" : 34,
"opciones1" : [ "Carlos" ],
"opciones2" : [ "Ruben" ],
"opciones3" : [ "Jorge" ],
"opciones4" : [ "Chavez" ],
"preguntas" : [ "Como se llama elrubiusomg?" ],
"premium" : false
},
- 将所有数据存储在一个对象下是错误的吗?
- 我怎样才能避免这种情况?
谢谢
问题是您将文档合并为一个文档。
您的格式(缩进)隐藏了您正在做的事情。但是......这就是你在你的问题中使用的(为简洁起见删除了一些属性):
{
"-Kbr7KouYOL_a9NIAyPV": {
"creator_name": "kk",
"game_name": "Elrubius",
"jugado": 62,
"premium": false
},
"-Kbr8RJMSCv95m6TS4Of": {
"creator_name": "CRIATURITA",
"game_name": "ELRUBIOSOMG",
"jugado": 34,
"premium": false
}
}
这只会为您提供一个包含大量子文档的巨大文档。最终,您将超过单个文档的大小。
此外,您构建 JSON 的方式是为每个文档创建唯一的 属性 名称:
-Kbr7KouYOL_a9NIAyPV
-Kbr8RJMSCv95m6TS4Of
我怀疑这是你的意图;您将永远无法查询,因为每个文档都有一个唯一的 属性 名称。
您需要修复您的 JSON 以代表多个单独的文档。并修复该唯一 ID,使其可查询。类似于:
{
"id": "-Kbr7KouYOL_a9NIAyPV",
"creator_name": "kk",
"game_name": "Elrubius",
"jugado": 62,
"premium": false
}
{
"id": "-Kbr8RJMSCv95m6TS4Of",
"creator_name": "CRIATURITA",
"game_name": "ELRUBIOSOMG",
"jugado": 34,
"premium": false
}
然后您就可以导入这组文档了。
请注意,在我的示例中,我添加了一个 id
属性。 MongoDB 创建一个唯一的 _id
属性 如果你不指定一个。因此,如果您想覆盖 MongoDB 的保证唯一性 属性,您可以将上面示例中的 id
替换为 _id
。
我很快就认出了这是一种 Firebase 数据库格式。真是一团糟 ?你付钱给他们来提取你的数据库,这就是他们给你的。我和你一样:-(我无法修复 2 GB json 文件以使其与 Mongo 兼容。
我 运行 使用 mongo 导入命令导入我的 json 文件,但所有数据都保存在一个对象下。
mongoimport -d DB NAME -c COLLECTION NAME --type json --file FILE PATH --host MY MONGO LAB HOST --port 27892 -u MYUSER -p MYPASSWORD
但现在当我在 mongorobot
中看到数据库时JSON
{
"-Kbr7KouYOL_a9NIAyPV" : {
"correctas" : [ 1 ],
"creator_name" : "kk",
"game_name" : "Elrubius",
"jugado" : 62,
"opciones1" : [ "Por usar una pistola falsa" ],
"opciones2" : [ "Por matar" ],
"opciones3" : [ "Por robar" ],
"opciones4" : [ "Por estar tomando alcol" ],
"preguntas" : [ "Elrubius porque fue detenido" ],
"premium" : false
},
"-Kbr8RJMSCv95m6TS4Of" : {
"correctas" : [ 2 ],
"creator_name" : "CRIATURITA",
"game_name" : "ELRUBIOSOMG",
"jugado" : 34,
"opciones1" : [ "Carlos" ],
"opciones2" : [ "Ruben" ],
"opciones3" : [ "Jorge" ],
"opciones4" : [ "Chavez" ],
"preguntas" : [ "Como se llama elrubiusomg?" ],
"premium" : false
},
- 将所有数据存储在一个对象下是错误的吗?
- 我怎样才能避免这种情况?
谢谢
问题是您将文档合并为一个文档。
您的格式(缩进)隐藏了您正在做的事情。但是......这就是你在你的问题中使用的(为简洁起见删除了一些属性):
{
"-Kbr7KouYOL_a9NIAyPV": {
"creator_name": "kk",
"game_name": "Elrubius",
"jugado": 62,
"premium": false
},
"-Kbr8RJMSCv95m6TS4Of": {
"creator_name": "CRIATURITA",
"game_name": "ELRUBIOSOMG",
"jugado": 34,
"premium": false
}
}
这只会为您提供一个包含大量子文档的巨大文档。最终,您将超过单个文档的大小。
此外,您构建 JSON 的方式是为每个文档创建唯一的 属性 名称:
-Kbr7KouYOL_a9NIAyPV
-Kbr8RJMSCv95m6TS4Of
我怀疑这是你的意图;您将永远无法查询,因为每个文档都有一个唯一的 属性 名称。
您需要修复您的 JSON 以代表多个单独的文档。并修复该唯一 ID,使其可查询。类似于:
{
"id": "-Kbr7KouYOL_a9NIAyPV",
"creator_name": "kk",
"game_name": "Elrubius",
"jugado": 62,
"premium": false
}
{
"id": "-Kbr8RJMSCv95m6TS4Of",
"creator_name": "CRIATURITA",
"game_name": "ELRUBIOSOMG",
"jugado": 34,
"premium": false
}
然后您就可以导入这组文档了。
请注意,在我的示例中,我添加了一个 id
属性。 MongoDB 创建一个唯一的 _id
属性 如果你不指定一个。因此,如果您想覆盖 MongoDB 的保证唯一性 属性,您可以将上面示例中的 id
替换为 _id
。
我很快就认出了这是一种 Firebase 数据库格式。真是一团糟 ?你付钱给他们来提取你的数据库,这就是他们给你的。我和你一样:-(我无法修复 2 GB json 文件以使其与 Mongo 兼容。