在MongoDB中定义和检索键值

时间:2014-03-23 20:56:05

标签: java mongodb

我想在MongoDB中定义一个文档,以便保留一些键值对列表以及更多信息。我需要查询键并提取值,而不是整个文档。让我们说它看起来像:

{  title :” Do not stop me now”
   Artist: “Queen”
   Info :{
    Metadata: [
    {key: “genre”, value: “Rock” },
    {key: “bps”, value: 120}
    ]
   }
}

我选择了基于http://java.dzone.com/articles/indexing-schemaless-documents

的格式

我想从艺术家是“女王”的歌曲中选择“genre”来查询 我目前的代码是:

BasicDBObject eleMatch = new BasicDBObject();
eleMatch.put("key","genre");
BasicDBObject up = new BasicDBObject();
up.put("$elemMatch",eleMatch);


BasicDBObject query = new BasicDBObject();
query.put("info.Metadata", up);
query.put(“Artist”,”Queen”);
BasicDBObject fields = new BasicDBObject("info.Metadata.$",1).append("_id", false); 
DBObject object =collection.findOne(query,fields);

我试图像以下一样提取价值:

System.out.println( (((BasicBSONList) ((BasicBSONObject)    object.get("info")).get("Metadata")).get("value")).toString());

但我无法访问"值"

我如何解决?

1 个答案:

答案 0 :(得分:0)

位置运算符返回一个元素的数组。所以,你转换为字符串的是一个数组,当然你会得到一种java id。 将其转换为数组并获取其第一个元素