MongoDB 导入到由字段设置的不同集合
MongoDB import to different collections set by a field
我有一个名为 data.json 的文件并使用 mongoexport
提取,具有以下结构:
{"id":"63","name":"rcontent","table":"modules"}
{"id":"81","name":"choicegroup","table":"modules"}
{"id":"681","course":"1242","name":"Requeriments del curs","timemodified":"1388667164","table":"page"}
{"id":"682","course":"1242","name":"Guia d'estudi","timemodified":"1374183513","table":"page"}
我需要的是使用 mongoimport
或 pymongo
之类的命令将此文件导入本地 mongodb
,但将每一行存储在以 [= 命名的集合中31=]值。
例如,集合 modules 将包含文档
{"id":"63","name":"rcontent"} and {"id":"81","name":"choicegroup"}
我试过 mongoimport
但我没有看到任何允许这样做的选项。有谁知道是否有执行此操作的命令或方法?
谢谢
使用 python 的基本步骤是:
解析 data.json
文件以创建 python 个对象
从每个文档对象中提取 table
键值对
将剩余的文档插入 pymongo 集合
谢天谢地,pymongo 使这非常简单,如下所示:
import json
from pymongo import MongoClient
client = MongoClient() # this will use default port and host
db = client['test-db'] # select the db to use
with open("data.json", "r") as json_f:
for str_doc in json_f.readlines():
doc = json.loads(str_doc)
table = doc.pop("table") # remove the 'table' key
db[table].insert(doc)
我有一个名为 data.json 的文件并使用 mongoexport
提取,具有以下结构:
{"id":"63","name":"rcontent","table":"modules"}
{"id":"81","name":"choicegroup","table":"modules"}
{"id":"681","course":"1242","name":"Requeriments del curs","timemodified":"1388667164","table":"page"}
{"id":"682","course":"1242","name":"Guia d'estudi","timemodified":"1374183513","table":"page"}
我需要的是使用 mongoimport
或 pymongo
之类的命令将此文件导入本地 mongodb
,但将每一行存储在以 [= 命名的集合中31=]值。
例如,集合 modules 将包含文档
{"id":"63","name":"rcontent"} and {"id":"81","name":"choicegroup"}
我试过 mongoimport
但我没有看到任何允许这样做的选项。有谁知道是否有执行此操作的命令或方法?
谢谢
使用 python 的基本步骤是:
解析
data.json
文件以创建 python 个对象从每个文档对象中提取
table
键值对将剩余的文档插入 pymongo 集合
谢天谢地,pymongo 使这非常简单,如下所示:
import json
from pymongo import MongoClient
client = MongoClient() # this will use default port and host
db = client['test-db'] # select the db to use
with open("data.json", "r") as json_f:
for str_doc in json_f.readlines():
doc = json.loads(str_doc)
table = doc.pop("table") # remove the 'table' key
db[table].insert(doc)