2014-03-27 46 views
1

查询使用pymongo包我想查询我的蒙戈数据库返回的每个不同websiteId其中newStatus等于7MongoDB的:由不同的ObjectId

for i in db.mycollection.find({'newStatus': 7}).distinct('websiteId'): 
    pprint(i) 

Unfortunatley这给了我一个TypeError: 'ObjectId' object has no attribute '__getitem__' 因为websiteId出现是某种ObjectId的东西:

c = db.mycollection.find_one() 
pprint(c) 

{u'date': datetime.datetime(2011, 2, 22, 20, 31, 58, 316000), 
u'newStatus': 7, 
u'oldStatus': 6, 
u'websiteId': ObjectId('4f94c64578a62')} 

有什么想法?

回答

0

尝试,如果这个工程 -

db.sample.find() 
{ "_id" : ObjectId("5333764486bee74e9de524ff"), "webstatId" : ObjectId("5333764486bee74e9de524fe"), "siteId" : "27" } 
{ "_id" : ObjectId("5333767a86bee74e9de52500"), "webstatId" : ObjectId("5333764486bee74e9de524fe"), "siteId" : "28" } 

db.sample.distinct('webstatId',{"siteId" : "27"}) 
[ ObjectId("5333764486bee74e9de524fe") ] 

-

connection = pymongo.Connection('mongodb://localhost',safe=True) 
db = connection.test 
sample = db.sample 
query = '\'webstatId\',{"siteId" : "27"}' 

try: 
    print query 
    doc = sample.distinct(query); 
except: 
    print "Unexpected error", sys.exec_info()[0] 
for d in doc: 
    print d 

我在外壳试过这种