Java MongoDB访问对象子节点

标签 java mongodb

我将以下文档从 MongoDB 提取到 Java 中:

{
    "_id": {
        "$oid": "5076371389d22e8906000000"
    },
    "item": {
        "values": [
            {
                "value1": [
                    4958,
                    3787,
                    344
                ],
                "value2": [
                    4,
                    13,
                    23
                ]
            }
        ], 
        "name": "item1"
    }
}

使用

M mongo = new M("database", "collection");
String query = "{\"item.name\":\"item1\"}";
DBCursor cur = mongo.collection.find(mongo.query(query));
while(cur.hasNext()) {
    System.out.println(cur.next().toString());
    // I need to access value1 array. 
}

我需要访问 value1 数组,我还需要拉取整个文档,所以我不能只要求 Mongo 为我返回这个。就像我拉动这个文档,需要进行计算并再次使用该文档。 我知道这个结果可以转换为 map 。但由于它是一个多维对象,我如何能够浏览它。谢谢

最佳答案

试试这个:

  //try catch omitted
  Mongo mongo = new Mongo("localhost", 27017);
  DB db = mongo.getDB("db");

  BasicDBObject query = new BasicDBObject("item.name","item1");
  DBCursor cur = db.getCollection("items").find(query);
  while(cur.hasNext()) {
      BasicDBObject object = (BasicDBObject) cur.next();
      BasicDBObject item =  (BasicDBObject) object.get("item");
      BasicDBList valueslist = (BasicDBList) item.get("values");
      BasicDBObject values = (BasicDBObject) valueslist.get(0);
      BasicDBList value1 = (BasicDBList) values.get("value1");
      System.out.println(value1); 
  }

您可以优化它,但我希望您明白这一点并且它会有所帮助。 干杯

关于Java MongoDB访问对象子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847808/

相关文章:

java从php设置类路径

mongodb - 我如何使用 mgo 和 Golang 编写以下 Mongo 聚合查询

mongodb - 从 Google Compute Engine 远程连接 mongo

node.js - 编译 Mongoose 后无法覆盖模型

JavaFX:如何更改动画中多边形的点?

java - GAE 索引(再次)

java - 如何创建表示对象的 XML 属性

java - 如何将 SQLite DB 从手持设备转移到可穿戴设备?

node.js - 从 mongodb 数组中删除一个元素

javascript - 检查值是否存在于 mongodb 数组中