猿问

Django中如何获取MongoDB查询(如find())结果的某个字段值。

defuploadfilefiles(request):
ifrequest.method=='GET':
returnHttpResponseRedirect('/uploadfilepage/')
fileinfo=json.loads(request.POST['files'])
client=pymongo.MongoClient('localhost',27017)
db=client.cloudfiledb
filename=fileinfo["flename"]
md5=fileinfo["_id"]
resu=db[fileinfo['username']+"fileinfo"].find({"flename":filename})
ifresu.count()==0:
db[fileinfo['username']+"fileinfo"].insert(fileinfo)
returnHttpResponse(json.dumps({"Uploaded":[]}))
else:
returnHttpResponse(resu)
查询的返回值为:{u'username':u'mochen',u'chunkSize':10485760,u'flename':u'hello.txt',u'length':38,u'uploadDate':1522581711234L,u'_id':u'-1118858670-142391418912608919631449407476'},如何在Django中获取某个字段的值,比如在上面的代码else分支中,如何获得resu的username或者其他字段,上面的返回结果是在前端浏览器的开发者工具的response中显示的。
千万里不及你
浏览 815回答 2
2回答

波斯汪

经实验及查看文档发现,find()函数返回的是类型为cursor的值,而find_one()返回的是数组或对象,故要访问返回的文档的某个字段时根据使用的查询函数,若为resu=db.collection.find(),则可通过如下的方式访问:resu=db[username+"fileinfo"].find()historyfilelist=[]try:foreleinresu:globalhistoryfilelisthistoryfilelist.append(ele["filename"])returnHttpResponse(json.dumps(historyfilelist))若是采用的find_one()函数,则可以直接通过字典访问,(如下面的_id获取的方式)resu=db[fileinfo['username']+"fileinfo"].find_one({"filename":filename})ifresuisNone:db[fileinfo['username']+"fileinfo"].insert(fileinfo)returnHttpResponse(json.dumps({"Uploaded":[]}))elifresu["_id"]==md5:上面方法亲测可行。

长风秋雁

看你的resu是什么,一般print(resu.username)或者print(resu['username']),如果是list的就是对里面的单个元素
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答