如何在Java中将所有文档的特定字段从mongodb传递到内存?

如何在Java中将所有文档的特定字段从mongodb传递到内存?,java,mongodb,nosql,Java,Mongodb,Nosql,我现在以以下方式与mongodb合作: Mongodb中的每个文档都包含三个字段:id、name1、name2 现在我有了一个用户输入用户id 我在mongodb中搜索整个集合,以查找id=user\u id的文档 返回name1和name2 然而,到目前为止,我的Java程序仍在运行,因为集合中有许多文档,我对每个文档进行一次查询以进行检查,这大大降低了性能。因此,我的问题是: 有什么建议我可以(大大)提高性能吗 我正在考虑将mongodb中的所有id作为arraylist加载到内存中,并将它

我现在以以下方式与mongodb合作:

  • Mongodb中的每个文档都包含三个字段:id、name1、name2
  • 现在我有了一个用户输入用户id
  • 我在mongodb中搜索整个集合,以查找id=user\u id的文档
  • 返回name1和name2
  • 然而,到目前为止,我的Java程序仍在运行,因为集合中有许多文档,我对每个文档进行一次查询以进行检查,这大大降低了性能。因此,我的问题是:

  • 有什么建议我可以(大大)提高性能吗
  • 我正在考虑将mongodb中的所有id作为arraylist加载到内存中,并将它们与user_id进行比较。当我找到匹配的id时,我只对数据库进行一次查询,得到name1和name2。你知道如何用Java实现它吗
  • 我当前的代码是smth,如下所示。请查阅。谢谢

    @RequestMapping(method = RequestMethod.GET, value = "/{number}")
    public Map<String, Object> getNames(@PathVariable("user_id") String number) {
         Map<String, Object> response = new LinkedHashMap<String, Object>();
         Collection1 result = collection1Controller.getNumberDetails(user_id);
         if (result != null) {
            response.put(user_id, collection1.findOne(user_id));
         }
         else 
            response.put("Unknown", null);
            return response;
         }
    }
    
    @RequestMapping(method=RequestMethod.GET,value=“/{number}”)
    公共映射getNames(@PathVariable(“user_id”)字符串号){
    映射响应=新建LinkedHashMap();
    Collection1结果=collection1Controller.getNumberDetails(用户id);
    如果(结果!=null){
    response.put(user_id,collection1.findOne(user_id));
    }
    其他的
    response.put(“未知”,null);
    返回响应;
    }
    }