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"}

我需要的是使用 mongoimportpymongo 之类的命令将此文件导入本地 mongodb,但将每一行存储在以 [= 命名的集合中31=]值。

例如,集合 modules 将包含文档

{"id":"63","name":"rcontent"} and {"id":"81","name":"choicegroup"}

我试过 mongoimport 但我没有看到任何允许这样做的选项。有谁知道是否有执行此操作的命令或方法?

谢谢

使用 python 的基本步骤是:

  1. 解析 data.json 文件以创建 python 个对象

  2. 从每个文档对象中提取 table 键值对

  3. 将剩余的文档插入 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)