2016-03-14 1 views
0

J'ai un problème où lorsque l'enregistrement que je recherche existe, la requête renvoie le résultat sans problèmes, mais lorsque je cherche quelque chose qui n'existe pas, il ne retourne pas null, il fait juste rien. Échoue silencieusement et n'exécute pas le reste du code.Java MongoDB ne renvoie pas de null

Ma requête ressemble simplement ceci:

Document contact = contacts.find(eq("_id", new ObjectId(customerID))).first();

figured it out: String DOIT être hex sinon la requête échouer en mode silencieux.

+0

Que voulez-vous dire par « échoue en silence, ne réalise pas le reste du code "? Êtes-vous sûr qu'il n'y a aucune exception (que vous essayez peut-être d'ignorer)? Ou la requête est-elle toujours en cours d'exécution? – Thilo

+0

Il n'y a pas de code d'exception dans la définition de la méthode ou dans les clauses 'try/catch'. Le serveur continue à fonctionner, mais si je mets 'System.out.println()' directement après mon 'contacts.find()', il n'imprime jamais rien. – Shepard

+0

S'il n'y a aucun enregistrement, comment s'attendre à ce qu'il revienne en premier? c'est une erreur – Saleem

Répondre

0

Au lieu de Document contact = contacts.find(eq("_id", new ObjectId(customerID))).first();

Modifier à (Vous pouvez l'optimiser. Je fais dessus de ma tête)

if(contacts.find(eq("_id", new ObjectId(customerID)))! = null) 
{ 
    Document contract = contacts.find(eq("_id", new ObjectId(customerID))).first(); 
} 
+0

FindIterable est déjà une preuve de résultat nulle. https://github.com/mongodb/mongo-java-driver/blob/3ffbe70a70a09f4e7a081922b20e8cdef444c1d5/driver/src/main/com/mongodb/FindIterableImpl.java#L205 – nobody

+0

@nobody, je suis désolé, je n'ai pas compris . Pouvez-vous élaborer s'il vous plaît? – Saleem

+0

Oh, j'ai compris. Merci. Je disais s'il n'y a pas de résultat, comment une fois peut s'attendre premier()? premier signifie qu'il devrait y avoir au moins un enregistrement. ai-je raison? – Saleem