2016-10-21 5 views
3

私はMongoデータベースを持っていますが、ユーザコレクションには1つのドキュメントしかありません。 ユーザ名フィルタを使用してfind()とfindOne()オペレーションを行います。 find()操作の結果が間違っていると思います。 MongoDBのfind()メソッドと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 
は、検索操作は、ユーザーが真されていない存在戻っている参照してください。 findOne()が正しく動作しています。 文書を返し

findOne()、またはゼロ/ nullを/それは-されているもの-:enter image description here

+0

最初の2つのクエリ(find()とfindOne())、または最後のコマンド(ifブロック)の結果の出力の違いが問題なのですか?出力結果は、結果が正しくないと思いますか? –

+0

find()は、 "noSuchUsername"という名前のユーザーが存在しないため、 "User does not exist"も返さなければならないと思います –

答えて

関連する問題