我想获取必需的文件,但似乎会返回集合中的每个文件

时间:2019-03-23 11:34:56

标签: python mongodb

我想与类别医生一起显示数据,但是我似乎已获取所有数据。

我尝试使用:result = db.find({},{“ first_name”:1,“ last_name”:1,“ cat”:'doctor'}),但仍然得到错误的结果。

@app.route("/users/get_doctors", methods = ['GET'])
def get_doctors():
    try:
        db = mongo.db.Login_Details
        result=db.find({},{"first_name": 1, "last_name": 1, "cat": 
        'doctor'})
        doctors = []
        for dr in result:
            doctors.append({"first_name": dr['first_name'], "last_name" : 
            dr['last_name'], "cat" : dr['cat']})
        return jsonify(doctors)
    except Exception:
        return 'error'

2 个答案:

答案 0 :(得分:0)

这是因为您试图合并错误的filterprojection。对于MongoDB docs,第一个参数是filter,第二个参数是projection(您可能需要也可能不需要)。

# Thi result contain all document with category doctor. Only first name,
# last name and category are retrieved.
result = db.find({'cat': 'doctor'}, ['first_name', 'last_name', 'cat'])

上面的示例有两个参数:第一个参数是filter,类似于普通SQL中的WHERE子句,第二个参数是projection,它列出了将要移动的字段要检索。

答案 1 :(得分:0)

db.find( {"cat" : "doctor" })

将找到所有带有cat = doctor的文件。

db.find({"cat": "doctor"}, {"first_name": 1, "last_name": 1})

将找到所有带有cat = doctor的文件。然后,它将仅输出first_namelast_name字段。除非由_id明确禁止,否则它还将输出{ "_id": 0, "first_name": 1, "last_name": 1}字段。第二个参数定义字段的投影,即哪些字段将出现在输出中。

有关查询和预测的语法的详细信息,请参见mongodb find