pymongo 查询无输出
编辑:
我稍微简化了一下问题。
mongo_documents = mongo_collection.find({"medicalObjectId": "269"})
print "\n\n"
for this_document in mongo_documents:
print this_document
print "-------------------------"
pqr = 269
mongo_documents2 = mongo_collection.find({"medicalObjectId": pqr})
print "\n\n"
for this_document2 in mongo_documents2:
print this_document2
我的问题是,第一段代码中我用数字作为查询的关键字时,能正常工作。但在第二段代码中我用变量时,却没有任何输出。
我刚开始学习python和pymongo,所以请多多包涵。
我有一个列表,内容是:
row = [1, 2, ...., 100]
我想要对这个列表中的每个元素在mongodb集合中进行查询。
这个集合的格式是:
collection = {'pk', 'attribute1', 'attribute2', 'attribute3'}
我想要调用mongodb连接,并遍历列表中的每个元素,使用row[i]=pk来查询,并返回其他属性作为输出。
也就是说,像这样:
mongo_documents = mongo_collection.find({'pk' : row[0]})
mongo_documents = mongo_collection.find({'pk' : row[1]})
依此类推。
我现在的代码是:
for row in result_set:
print row[0]
mongo_documents = mongo_collection.find({'medicalObjectId' : row[0]})
print mongo_documents
for this_document in mongo_documents:
print "----------------------------------"
print this_document
但是我没有任何输出。我哪里出错了?
如果我打印mongo_documents,我得到的是:
<pymongo.cursor.Cursor object at 0xe43150>
1 个回答
4
你可以使用MongoDB的$in操作符一次性获取所有的行,然后逐个处理它们。
mongo_documents = mongo_collection.find({ 'medicalObjectId' : { '$in' : result_set } } );
for doc in mongo_documents:
print mongo_documents
我还没有测试过,如果不管用请在下面留言。
编辑
mongo_documents2 = mongo_collection.find({"medicalObjectId": str(pqr)})
print "\n\n"
for this_document2 in mongo_documents2:
print this_document2