2013-08-30 4 views
0

mongodb requête est db.test.find ({"col1": {"$ ne": « »}}). count(), j'ai essayé beaucoup de sources pour trouver la solution, la « col1 » doit être rempli de tableau de liste, s'il vous plaît aidez-moi j'ai collé une partie de mon codeJ'ai une requête dans mongodb et la clé de référence sont dans la liste hashmap, j'ai besoin de traiter une requête simple en utilisant java dans mongodb

`

List<String> likey = new ArrayList<String>(); 

for (DBObject o : out.results()) 
{ 
likey.add(o.get("_id").toString()); 
} 

Iterator<String>itkey = likey.iterator(); 

DBCursor cursor ; 

//cursor = table.find(); 

HashMap<String, String> hashmap = new HashMap<String, String>(); 

while (itkey.hasNext()) 
{ 
System.out.println((String)itkey.next()); 

String keys = itkey.next().toString(); 

//System.out.println("keys --> "+keys); 

String nullvalue = ""; 

Boolean listone = table.distinct(keys).contains(nullvalue); 


hashmap.put(keys, listone.toString()); 

//System.out.println("distinct --> "+keys+" "+listone); 

//System.out.println("proper str --- >"+ '"'+keys+'"'); 
} 

Iterator<String> keyIterator = hashmap.keySet().iterator(); 
Iterator<String> valueIterator = hashmap.values().iterator(); 

while (keyIterator.hasNext()) { 
//System.out.println("key: " + keyIterator.next()); 


while (valueIterator.hasNext()) { 
//System.out.println("value: " + valueIterator.next()); 

//System.out.println("Key: " + keyIterator.next() +""+"value: "+valueIterator.next()); 

String hashkey = valueIterator.next(); 

} 

} 

`

+0

Ne jetez pas votre code entier ici et dites "aidez-moi". Quel est exactement votre problème et qu'avez-vous déjà essayé? –

+0

La liste hashmap se compose de noms de clés et je dois passer les noms de clés à la collection mongodb pour récupérer les enregistrements vierges, la requête pour laquelle je travaille est db.test.find ({"col1": {"$ ne : ""}}). count(). col1 sont les noms de clés seront ajoutés à partir de la liste – user2733125

+0

Voulez-vous dire que ce que vous essayez de faire est de récupérer le nombre d'entrées non nulles dans la base de données pour chaque clé? – Trisha

Répondre

0

Lorsque vous publiez le code, il aide si vous indentez, donc c'est plus lisible. Comme je vous l'ai mentionné sur un autre forum, vous devez revenir en arrière et passer en revue les classes de collection Java, puisque vous avez plusieurs erreurs d'utilisation dans le code ci-dessus.

Voici quelques choses que vous devez faire pour nettoyer votre code:

1) Vous n'avez pas besoin d'utiliser le iterator itkey. Au lieu de cela, utilisez:

for (String key : likey) 

et de se débarrasser de tous les appels itkey.next. Votre code actuel ne traite que tous les deuxièmes éléments de la liste. Les autres sont imprimés.

2) Votre HashMap mappera une clé à un booléen. Est-ce que c'est ce que tu veux? Vous avez dit que vous voulez compter le nombre de valeurs non nulles pour la clé. Ainsi, la ligne:

Boolean listone = table.distinct(keys).contains(nullvalue); 

est presque certainement erronée.

3) Lorsque vous parcourez HashMap, vous n'avez pas besoin de valueIterator. A la place, récupérez la clé (soit à partir du keyIterator, soit d'une variable que vous définissez en utilisant la syntaxe itérative plus simple ci-dessus), puis utilisez la clé pour obtenir la valeur correspondante en utilisant hashmap.get (key).

Cela ne fera pas fonctionner votre code, mais il va le nettoyer un peu - pour le moment, il est difficile de comprendre ce que vous avez l'intention de faire.