【问题标题】:How can I query documents in mongodb如何在 mongodb 中查询文档
【发布时间】:2015-04-06 17:59:05
【问题描述】:

我是 mongoDB 的新手,并且已经设置了一个 java 应用程序来与我的数据库通信。我的数据库中只有一个包含多个文档的集合。有没有一种方法可以让我进行一次查询来获取我的集合,然后以某种方式访问​​每个文档中的所有字段?

我试图创建一个查询,然后将我所有的 DBObject 添加到一个 ArrayList。但是一旦我这样做了,我就无法弄清楚如何访问每个文档中的数据。

这是我目前所拥有的:

ArrayList<DBObject> docs = new ArrayList<DBObject>();
DBCollection coll = db.getCollection("testCollection");

DBCursor cursor = coll.find();
try {
   while(cursor.hasNext()) {
   docs.add(cursor.next());
}
} finally {
   cursor.close();
}

//how do I access everything in my docs???
docs.get(0).find("id", 1);

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    由于列表中的每个对象都是一个 DBObject,因此您应该能够通过以下方式访问字段值:

    BasicDBObject doc = docs.get(0);
    String fieldValue = doc.getString("nameOfField");
    

    您不能像在数组列表上那样执行 find("id", 1),但您可以在 DBCollection "coll" 上执行此操作。格式会有点不同,比如 coll.find({ id: 1})。然后你会得到一个结果集合。如果您只查找一条​​记录,请使用 coll.findOne() like this.

    您将不得不以另一种方式遍历您的数组列表来进行自己的搜索。我建议创建一个包含属性的类,以匹配每个文档的字段。这是另一个可能有帮助的资源:

    converting-dbobject-to-java-object-while-retrieve-values-from-mongodb

    如果你还没有看过,我也推荐this tutorial链接。

    【讨论】:

      【解决方案2】:

      是的,您可以访问文档中的所有值。 遍历下面的文档

      for(DBObject obj: docs){
          obj.get("_id");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        • 2018-03-09
        相关资源
        最近更新 更多