pymongo 查询无输出

1 投票
1 回答
4153 浏览
提问于 2025-04-17 04:28

编辑:
我稍微简化了一下问题。

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

撰写回答