import pymongo
uri = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(uri)
db = client.TeamCity
students = db.students.find({})
for student in students:
print (student)
Python结果:
MongoDB:结果
db.students.find({})
{ "_id" : ObjectId("5788483d0e5b9ea516d4b66c"), "name" : "Jose", "mark" : 99 }
{ "_id" : ObjectId("57884cb3f7edc1fd01c3511e"), "name" : "Jordan", "mark" : 100
}
import pymongo
uri = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(uri)
db = client.TeamCity
students = db.students.find({})
print (students.count())
Python结果:
mongoDB结果
db.students.find({}).count()
2
我错过了什么?
对于
import pymongo
uri = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(uri)
db = client.TeamCity
students = db.students.find({})
print (students)
Python结果:
所以我认为它能够成功连接到数据库,但不能返回结果
答案 0 :(得分:0)
尝试你的pymongo代码,即将TeamCity
更改为Teamcity
打印所有学生:
import pymongo
uri = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(uri)
db = client.Teamcity
students = db.students.find({})
for student in students:
print (student)
统计所有学生:
import pymongo
uri = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(uri)
db = client.Teamcity
students = db.students.find({})
print (students.count())
答案 1 :(得分:0)
我知道这个问题早已得到解答,但是今天我遇到了同样的问题,并且碰巧有不同的原因,所以我在这里添加一个答案。
在shell上运行的代码:
> db.customers.find({"cust_id": 2345}, {"pending_questions": 1, _id: 0})
{ "pending_questions" : [ 1, 5, 47, 89 ] }
代码在PyMongo中不起作用(通过网络表单设置的cust_id):
db.customers.find({"cust_id": cust_id}, {"pending_questions": 1, "_id": 0})
原来,shell中的数字被解释为int,而Python代码中使用的数字被PyMongo解释为浮点数,因此不返回匹配项。这证明了这一点:
cust_id = int(request.args.get('cust_id'))
db.customers.find({"cust_id": cust_id}, {"pending_questions": 1, "_id": 0})
产生结果:
[1.0, 5.0, 47.0, 89.0]
简单的解决方案是将所有类型都转换为python代码中的int类型。总之,shell推断出的数据类型可能与PyMongo推断出的数据类型不同,这可能是在Shell上运行时在shell上返回结果的查找查询不返回任何内容的原因之一。