Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python&;MongoDb:查询在执行时不工作_Python_Django_Mongodb - Fatal编程技术网

Python&;MongoDb:查询在执行时不工作

Python&;MongoDb:查询在执行时不工作,python,django,mongodb,Python,Django,Mongodb,我有一个保存在mongo db中的令牌 db.user.findOne({'token':'7fd74c28-8ba1-11e2-9073-e840f23c81a0'}['uuid']) { "_id" : ObjectId("5140114fae4cb51773d8c4f8"), "username" : "jjj51@gmail.com", "name" : "vivek", "mobile" : "12345", "is_active" : fals

我有一个保存在mongo db中的令牌

db.user.findOne({'token':'7fd74c28-8ba1-11e2-9073-e840f23c81a0'}['uuid'])
{
    "_id" : ObjectId("5140114fae4cb51773d8c4f8"),
    "username" : "jjj51@gmail.com",
    "name" : "vivek",
    "mobile" : "12345",
    "is_active" : false,
    "token" : BinData(3,"hLL6kIugEeKif+hA8jyBoA==")
}
当我在mongodb命令行界面中执行时,上面的查询工作正常

当我试图在Django视图lik中运行时,也会出现相同的查询

get_user = db.user.findOne({'token':token}['uuid'])
or `get_user = db.user.findOne({'token':'7fd74c28-8ba1-11e2-9073-e840f23c81a0'}['uuid'])`
我犯了一个错误

KeyError at /activateaccount/
'uuid'
请帮我找出为什么我会出现这个错误

我的数据库

 db.user.find()
{ "_id" : ObjectId("5140114fae4cb51773d8c4f8"), "username" : "ghgh@gmail.com", "name" : "Rohit", "mobile" : "12345", "is_active" : false, "token" : BinData(3,"hLL6kIugEeKif+hA8jyBoA==") }
{ "_id" : ObjectId("51401194ae4cb51773d8c4f9"), "username" : "ghg@gmail.com", "name" : "rohit", "mobile" : "12345", "is_active" : false, "token" : BinData(3,"rgBIMIugEeKQBuhA8jyBoA==") }
{ "_id" : ObjectId("514012fcae4cb51874ca3e6f"), "username" : "ghgh@gmail.com", "name" : "rahul", "mobile" : "8528256", "is_active" : false, "token" : BinData(3,"f9dMKIuhEeKQc+hA8jyBoA==") }

TL;DR您的查询有错误

详细解释:

转换为
undefined
,因为您试图从没有该属性的对象获取属性
uuid
。在使用Javascript的Mongo shell中,转换为以下查询:

db.user.findOne(undefined)
你会得到一些随机(好吧,不是那么随机,可能是第一个)结果

当您试图从字典中获取未知密钥时,Python会更加严格:

由于
uuid
不是字典
{'token':token}
中的有效键,因此当您尝试访问它时,将得到一个
KeyError

EDIT:由于您已经使用Python
UUID
类型在数据库中存储令牌,因此您还需要在查询中使用相同的类型:

from uuid import UUID

token = '7fd74c28-8ba1-11e2-9073-e840f23c81a0'
get_user = db.user.find_one({'token' : UUID(token) })

此项的覆盖范围是什么从查询中删除
['uuid']
。定义
不工作。你不可能得到一个
键错误
,所以有些别的东西。请补充您的问题。在执行get_user=db.user.find_one(context)操作时,“非类型”对象不可编辑,其中context['token']=7fd74c28-8ba1-11e2-9073-e840f23c81a0'那么,您确定数据库中确实存在具有该令牌的用户吗?在Mongo shell中尝试查询(不带
['uuid']
)。此外,
context
是否包含除
token
之外的更多项?您的令牌存储为BinData()。它们是如何生成/插入数据库的?@robertklep我使用了类似python uuid的token=uuid.uuid1()上下文['token']=token db.user.insert(上下文)
{'token':token}['uuid']
from uuid import UUID

token = '7fd74c28-8ba1-11e2-9073-e840f23c81a0'
get_user = db.user.find_one({'token' : UUID(token) })