为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2019-05-22 16:54:36
defuploadfilefiles(request):ifrequest.method=='GET':returnHttpResponseRedirect('/uploadfilepage/')fileinfo=json.loads(request.POST['files'])client=pymongo.MongoClient('localhost',27017)db=client.cloudfiledbfilename=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中显示的。
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

经实验及查看文档发现,find()函数返回的是类型为cursor的值,而find_one()返回的是数组或对象,故要访问返回的文档的某个字段时根据使用的查询函数,若为resu=db.collection.find(),则可通过如下的方式访问:resu=db[username+"fileinfo"].find()
historyfilelist=[]
try:
foreleinresu:
globalhistoryfilelist
historyfilelist.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:
上面方法亲测可行。
                            
查看完整回答
反对 回复 2019-05-22
?
长风秋雁

TA贡献1757条经验 获得超7个赞

看你的resu是什么,一般print(resu.username)或者print(resu['username']),如果是list的就是对里面的单个元素
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 814 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信