我在 mongodb 中有一个查询,引用键在哈希映射列表中,我需要在 mongodb 中使用 java 处理一个简单的查询



mongodb查询是db.test.find({"col1":{"$ne":"}).count(),我已经尝试了很多来源来寻找解决方案,"col1"必须从列表数组中填充,请帮助我我已经粘贴了我的代码的一部分

`

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();
}
}

`

发布代码时,缩进代码会有所帮助,因此可读性更强。正如我在另一个论坛上向您提到的,您需要返回并查看Java集合类,因为在上面的代码中存在多个使用错误。

这里有一些你需要做的事情来清理你的代码:

1) 您不需要使用itkey迭代器。相反,使用:

for (String key : likey) 

并取消所有itkey.next调用。您当前的代码只处理List中的每一秒元素。其他的都打印出来了。

2) 您的HashMap将把一个键映射到一个布尔值。这就是你想要的吗?您说过要计算键的非零值数量。所以,这条线:

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

几乎可以肯定是错误的。

3) 迭代HashMap时,不需要valueIterator。相反,获取密钥(从keyIterator或使用上面更简单的迭代器语法定义的变量),然后使用该密钥使用hashmap.get(key).获取匹配值

这不会让你的代码工作,但它会在一定程度上清理它——目前很难理解你打算让它做什么。

最新更新