如何一次在mongodb中创建100000个条目?

时间:2015-10-19 09:41:49

标签: python mongodb python-2.7 pymongo mongoengine

虽然一次创建100000(一万个),但它会崩溃。我的DB是这样的:

EmbDoc(EmbeddedDocument):
    id = StringField(required=True, primary_key=True)
    field_one = StringField()
    ...

MyDoc(Document):
    emb_doc_list = EmbeddedDcoumentListField(EmbDoc)
    total_emb_doc = IntField()
    ...

现在我希望每个MyDoc最多有100个EmbDoc,如果它达到100,我会创建另一个MyDoc。(我的实际数据存在于EmbDoc中)。 为了做到这一点,我查询MyDocs并找到现有少于100个的现有MyDoc并添加一个条目。

如果我尝试创建1000个entires(但在本地计算机上需要大约40秒),这个逻辑工作正常。但是,当我尝试一次添加大量数据时,它会失败。

任何关于如何解决这个问题的想法都会有所帮助。

1 个答案:

答案 0 :(得分:1)

问题在于db查询和序列化。由于我们每次都在查询所有MyDoc,因此性能受到影响 我们开始维护MyDoc idtotal_emb_doc的哈希映射。现在我们只需查看一下即可获得Doc 目前,每10000个条目需要10秒钟(带序列化)。