我需要过滤Web服务器请求并为pymongo设置查询,它并不简单,因为我需要多个字段具有“和”或“或”功能。
我过滤了get请求,获取了参数,构建了要传递给db..find的字符串。但这会引发错误。我已经确定了错误,因为我正在形成一个像这样的字符串以传递给函数,现在是它的字符串,而不是实际上是字典,它引发了错误。正确的做法是什么?
实际上,我必须得到类似的信息:{$ and:[{Title:{“ $ regex”:“ Hong Kong”}}},{Url:{“ $ regex”:“ hong”}}}}} { '_id':0,'Body':0}
我要发送的get请求是:http://127.0.0.1:5000/getRequest?Title=“香港抗议”&Url =“ hong”现在,下面的内容给出了所需的确切字符串,但是由于它不应该是字符串,因此会引发错误。请帮忙。
@app.route('/getRequest', methods=['GET'])
def request():
global connection
args = request.args
if len(args) > 1:
search_str = ""
for key, val in args.items():
search_str += '{'+key+':{"$regex":'+str(val)+'}},'
search_str = search_str[:-1]
display_dict={'id':0, 'Body':0}
final_search_str = "{$and:["+search_str+"]},{'_id':0, 'Body':0}"
#return(final_search_str)
# query_str = request.args.get('query_string')
db = connection['test']
collection = db['collect1']
output = []
for s in collection.find(final_search_str):
output.append({'Title' : s['Title'], 'Url' : s['Url']})
应该决定应将其传递给函数。通过pymongo进行这种复杂查询的更好的方法吗?
答案 0 :(得分:0)
您可以使用re和bson.regex.Regex模块执行此操作。
http://api.mongodb.com/python/current/api/bson/regex.html
function checkAuthenticated(req, res, next) {
if(!req.header('authorization')) {
return res.status(401).send({message: 'Unauthorized request. Missing authentication header'});
}
let token = req.header('authorization').split(' ')[1];
let payload = jwt.decode(token, '123');
if(!payload) {
return res.status(401).send({message: 'Unauthorized request. Authetication header invalid'});
}
req.user = payload;
next();
}
router.route('/:user_id')
.get((req, res) => {
User.findById(req.params.user_id, (err, user) => {
if (err) {
res.send(err);
} else {
res.json(user);
}
});
})