簡體   English   中英

不能在pymongo的集合實例中使用find()

[英]can't use find() in collection instance in pymongo

我有一堂課:

import sys
import os
import pymongo
from pymongo import MongoClient

class Collection():
    def __init__(self, db, collection_name):
        self.db = db
        self.collection_name = collection_name

        if not hasattr(self.__class__, 'client'):
            self.__class__.client = MongoClient()

        self.data_base = getattr(self.client, self.db)
        self.collection = getattr(self.data_base, self.collection_name)

我創建了如下的類實例:

    def getCollections(self):
        collections_dict = {}
        for i in range(len(self.db_collection_names)):
            collections_dict[self.db_collection_names[i]] = Collection(self.database_name, self.db_collection_names[i])
        return collections_dict

db_collection_names包含email_logs 我創建了一個emails實例,如下所示:

emails = collections_dict['email_logs']

print emails產生<collection.Collection instance at 0x105ce6248>

print emails.find()產生:

Traceback (most recent call last):
  File "main.py", line 75, in <module>
program.runProgram()
  File "main.py", line 63, in runProgram
print emails.find
AttributeError: Collection instance has no attribute 'find'

為什么會出錯?

不知道為什么要麻煩重新定義Pymongo Collection類。

from pymongo import MongoClient

db = MongoClient().my_database  # create an instance of pymongo Database
emails = db.emails  # create an instance of pymongo Collection

emails.find()  # yeilds a pymongo Cursor (containing the query results)

我在find()方法之前缺少集合

emails.collection.find()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM