2015-05-06 61 views
0

我有一個類:不能使用查找()在集合實例在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' 

爲什麼出錯?

回答

0

不確定爲什麼你要重新定義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) 
0

我錯過了集合find()方法

emails.collection.find()