0

次のドキュメントを 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 にこれを返すように頼むことはできません。私がこのドキュメントを引っ張っているように、計算をしてドキュメントを再度使用する必要があります。この結果は地図に変換できることがわかりました。しかし、それは多次元オブジェクトであるため、どうすればそれをナビゲートできるでしょうか。ありがとう

4

1 に答える 1

2

これを試して:

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

あなたはそれを最適化することができますが、要点を理解して助けてくれることを願っています. 乾杯

于 2012-10-11T20:42:57.893 に答える