我想在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());
但我无法访问"值"
我如何解决?
答案 0 :(得分:0)
位置运算符返回一个元素的数组。所以,你转换为字符串的是一个数组,当然你会得到一种java id。 将其转换为数组并获取其第一个元素