web-dev-qa-db-ja.com

Pymongoを使用してMongoDBで単一のフィールドを選択する方法は?

MongoDB内のレコードを検索し、その結果から_idをフィルターしようとしています。

これが私のコードです:

#app.py
@app.route('/login', methods = ['GET', 'POST'])
def login():
    if request.method == "POST":
        password = request.form.get('password')
        email = request.form.get('email')
        db = get_db()
        data = db.author.find_one({'email' : email, 'password' : password})
        print(data)
        return 'data'
    else:
        return render_template('login.html')

出力:

{'password': '123123', 'name': '<my_name>', 'email': '<my_email>', '_id': ObjectId('<an_object_id_string>')}

出力から_idフィールドをフィルタリングするにはどうすればよいですか?

10
Kaushik Makwana

プロジェクションを使用して、返すフィールドを指定する必要があります。

data = db.author.find_one({'email' : email, 'password' : password}, {'_id': 1})
12
styvane

クエリで2番目のオブジェクトを渡す必要があります。最初のパラメーターは選択句ですが、2番目のパラメーターは射影です。

詳細については、MongoDBのドキュメントを参照してください。 https://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/

2
slomek

idを回避するための最良の方法です。

data = db.author.find_one({'email' : email, 'password' : password},{"password":1, "email":1, "name":1,"_id": False})

これで、「{'password': '123123'、 'name': 'prakash'、 'email': '[email protected]'}」(IDなし)の回答が得られました

2
PrabhuPrakash