find() und findOne () - Methoden in MongoDB, zeigt unterschiedliche Ergebnisse

Ich habe eine Mongo-Datenbank, wo in der users-Auflistung habe ich nur 1 Dokument.
Ich mache find() und ein findOne() Operationen mit dem Benutzernamen filtern.
Ich bekomme, was ich denke, ist ein Falsches Ergebnis aus find() Betrieb.

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

Sehen die find() Betrieb wieder Benutzer gibt, das ist nicht wahr. findOne() sich richtig verhält.find() und findOne () - Methoden in MongoDB, zeigt unterschiedliche Ergebnisse

  • Sie sagen, das problem ist das mit den unterschieden in Ausgaben in den ersten beiden Abfragen ( die find() vs. die findOne() ), oder die Ergebnisse der letzten Befehle (if-blocks ) ? Was die Ausgabe macht Sie denken, dass die Ergebnisse falsch sind?
  • Ich denke, dass find() sollte auch return "Benutzer ist nicht vorhanden", da es keinen user namens "noSuchUsername" existiert nicht
InformationsquelleAutor Anuvrat Tiku | 2016-10-21
Schreibe einen Kommentar