3
私はMongoデータベースを持っていますが、ユーザコレクションには1つのドキュメントしかありません。 ユーザ名フィルタを使用してfind()とfindOne()オペレーションを行います。 find()操作の結果が間違っていると思います。 MongoDBのfind()メソッドとfindOne()メソッドは異なる結果を示します
は、検索操作は、ユーザーが真されていない存在戻っている参照してください。 findOne()が正しく動作しています。 文書を返しMongoDB shell version: 3.2.10 connecting to: test Server has startup warnings: 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2016-10-20T20:37:32.681-0700 I CONTROL [initandlisten] > use lab2 switched to db lab2 > db.users.find() { "_id" : ObjectId("5807ac0765f24dd0660e4332"), "username" : "avtrulzz", "fname" : "Abc", "lname" : "Def", "email" : "[email protected]", "password" : "rootuser", "mobile" : NumberLong(1234567890) } > db.users.findOne() { "_id" : ObjectId("5807ac0765f24dd0660e4332"), "username" : "avtrulzz", "fname" : "Abc", "lname" : "Def", "email" : "[email protected]", "password" : "rootuser", "mobile" : NumberLong(1234567890) } > if (db.users.find({username : "noSuchUsername"})) { ... print ("Username exists"); ... } else { ... print ("User does not exist"); } Username exists > if (db.users.findOne({username : "noSuchUsername"})) { print ("Username exists"); } else { print ("User does not exist"); } User does not exist > if (db.users.findOne({username : "avtrulzz"})) { print ("Username exists"); } else { print ("User does not exist"); } Username exists
最初の2つのクエリ(find()とfindOne())、または最後のコマンド(ifブロック)の結果の出力の違いが問題なのですか?出力結果は、結果が正しくないと思いますか? –
find()は、 "noSuchUsername"という名前のユーザーが存在しないため、 "User does not exist"も返さなければならないと思います –