MongoDB导入到由字段设置的不同集合

MongoDB导入到由字段设置的不同集合,mongodb,import,pymongo,mongoimport,database,Mongodb,Import,Pymongo,Mongoimport,Database,我有一个名为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":"6

我有一个名为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
,但存储集合中以表值命名的每一行

例如,收集模块将包含文档

{"id":"63","name":"rcontent"} and {"id":"81","name":"choicegroup"}
我试过使用
mongoimport
,但我没有看到任何允许这样做的选项。有人知道有没有命令或方法可以做到这一点吗


谢谢

使用python的基本步骤如下:

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

  • 从每个文档对象中提取
    键值对

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

    非常感谢。这段代码只有在json文件中的每个文档都单独写在一行中时才能工作。如果文档被分割成若干行,它将不起作用。您可以使用ijson解析器解析它(它将动态解析它)