我试图使用mongolabrestapihttp://docs.mongolab.com/data-api/更新MongoDB数据库中的文档。在
在文档中,它说使用PUT请求来更新集合中的文档,在http请求的主体中使用update操作符。在
因此,根据文件,我尝试以下方法:
urlinsert = 'https://api.mongolab.com/api/1/databases/ur_coursesniper/collections/classes?apiKey={key}&q={q}'
urlinsert = urlinsert.format(q=querycheck, key=CONFIG["key"])
form_fields = {
"$push" : { "Users" : email},
}
form_data = urllib.urlencode(form_fields)
result = urlfetch.fetch(url=urlinsert,
payload=form_data,
method=urlfetch.PUT,)
但是,执行此代码块后,集合中的文档不会更新。在
我收到的HTTP响应是
^{pr2}$这是令人费解的,因为它说的答复是成功的和一个帖子。在
你知道到底发生了什么吗?在
str.format()
返回格式化字符串,它不会就地更新。因此对
^{pr2}$urlinsert
的值没有影响,并且发送查询字符串apiKey={key}&q={q}
。试试这个:看看mongodb的响应主体中包含了什么是很有趣的—它可能包含一条错误消息。在
更新
现在您已经设置了
Content-Type: application/json
头,您需要在有效负载中发送JSON数据。"$push" : { "Users" : email}
不是有效的JSON。您可以使用json.dumps()
将form_fields
字典转换为有效的JSON字符串:相关问题 更多 >
编程相关推荐