首页 > 解决方案 > MongoClient 是否会维护其集合对象直到被销毁?(Python)

问题描述

我有一个简单的 Python MongoClient 类和一个来自其集合之一的 fetch 方法。假设我们有 self.db 作为我们的默认数据库。

我的第一个问题是,pymongo 是否在客户端对象被销毁之前维护其集合对象。

class MyMongo(MongoClient):
...
    def find_all(self, col_name):
        collection = self.db[col_name]       # here, does it fetch the collection from MongoDB
                                             # everytime?
        return collection.find({})
...

第二个问题是,如果我实例化指向上面 MongoClient 中的集合之一的新 Collection 实例,我是否会有两个 Collection 实例用于同一个 Collection?

from pymongo.collection import Collection

mongo = MyMongo()
col = Collection(mongo.db, col_name)      # here, will I have two Collection instances?
                                          # for one is inside of mongo (=mongo.db[col_name])
                                          # for another is 'col' variable

标签: pythonmongodbpymongo

解决方案


集合对象通常只有简单的属性,如集合名称和其中的选项。因此,它们类似于任何 Python 应用程序使用的绝大多数 Python 对象,它们不占用太多资源,并且在不再引用它们时将被垃圾回收。


推荐阅读