【问题标题】:Get the single value from mongodb Collection using java code使用java代码从mongodb Collection中获取单个值
【发布时间】:2016-07-12 12:31:35
【问题描述】:

我只想从 Mongodb 集合中获取单个值。

目前我正在获取 FindIterable 的文档。

CustomObject obj =  db
        .getCollection("Collection",CustomObject.class)
        .find(and(eq("field1", new BigDecimal(10409)),eq("field2", new BigDecimal(1))));

但是,我不希望任何结果到对象或列表中。就像在 Oracle 中我们使用查询来获取单个对象:

从 ID=10 AND DEPT_ID=23 的 EMPLOYEE_TABLE 中选择姓名;

这个查询根据过滤条件给了我们员工的单名,我们得到字符串类型对象的输出。

我想从 mongodb 获取同样的信息,我不想使用任何 bean 来填充数据。我只想要一个 String 对象作为结果。

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    您可以在 Collection 上使用 find 方法,传递查询和字段来检索:

    BasicDBObject fields = new BasicDBObject();
    fields.put("name", true);
    
    BasicDBObject query = new BasicDBObject();
    query.put("id", 13);
    query.put("dept_id", 23);
    
    DBCursor find = mongoTemplate.getCollection("example").find(query, select);
    List<DBObject> list = find.toArray();
    List<String> names = list.stream().map(o -> String.valueOf(o.get("name"))).collect(Collectors.toList());
    

    【讨论】:

    • 感谢您的回答,但我只想要单个 String / BigDecimal 类型的结果,我不想要任何 List 或 bean 类型的对象作为结果。
    • + 一个从 DbObject 中检索列值的单行代码。
    • 抱歉,误解了你的意思。不是“单一结果”,而是单列结果,改变了答案以反映这一点。这是我目前知道的唯一方法。
    【解决方案2】:

    如果您正在寻找一个只返回一个文档的函数,那么您可以使用findOne

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多