如何从子文档中获取数据

时间:2016-12-10 11:51:06

标签: java mongodb nosql

您好我是MongoDB的新手,但在java中经验丰富。

我现在正试图通过java应用程序从我的MongoDB获取数据,但是我在从子文档中检索数据时遇到了麻烦,并且希望能够帮助理解它是如何工作的以及如何做到这一点。

修改

为我提供团队名称的测试代码。

BasicDBObject queryTeam = new BasicDBObject("team", team);
FindIterable<Document> foundTeam = db.getCollection("teams").find(queryTeam);      
MongoCursor<Document>     cursor = foundTeam.iterator();

while(cursor.hasNext())
{
    Document tmp = cursor.next();
    return tmp.get("team").toString();
}

我有兴趣获取谁在团队中聘请了一名specefic玩家的信息。玩家在子文档中并具有一些属性(参见imgur链接)。 我有兴趣获取属性hiredBy,我的问题是你如何在java中做到这一点?

集合的结构:http://imgur.com/a/r8hom

您可以轻松创建集合布局的提示:http://www.jsoneditoronline.org/

 DistinctIterable<Document> players = db.getCollection("teams").distinct("Players", Document.class);

返回所有玩家,我可以在java中查看它们并查看是谁创建的。

主持人可以将此问题标记为已解决。上面解决了这个问题。

2 个答案:

答案 0 :(得分:0)

你对子文档的意思是什么?你能发布一个集合和文档结构的例子吗?

修改:出于某种原因,我无法在您的帖子上添加评论。所以,现在考虑一下这个答案。

答案 1 :(得分:0)

根据您的问题/评论和给出的结构,检查一下,

db.collectionName.findOne({"players.firstName":"Bengt"},{"players.hiredBy":1})

PS:当问题发生变化时会进行编辑。