mongodb java驱动程序。如何通过引用返回对象

时间:2014-10-29 22:56:02

标签: java mongodb aggregation-framework

例如,我有两个收藏品“动物”和“食物”。 在收集“动物”中有一种野外食物,其参考收集“食物”(未嵌入)。 我使用mongo java驱动程序:

    DBCollection collection = db.getCollection("animals");
    DBObject fields = new BasicDBObject("name", 1);
    fields.put("food", 1);
    fields.put("_id", 0);
    DBObject project = new BasicDBObject("$project", fields );
    collection.aggregate(project);

它返回对象“食物”的名称和ID。 那么获取对象“食物”字段的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

简短的回答是,您无法在MongoDB中自动执行此类操作。它没有“加入”的概念。您只需要进行单独查询。

documentation on Database Reference的这一部分应该有助于澄清。

  

要解析DBRefs,您的应用程序必须执行其他查询才能返回引用的文档。许多驱动程序都有辅助方法,可以自动形成DBRef的查询。驱动程序[1]不会自动将DBRef解析为文档。   DBRefs提供了一种通用格式和类型来表示文档之间的关系。如果数据库必须与多个框架和工具交互,DBRef格式还提供了用于表示文档之间链接的通用语义。

通常情况下,最好将内容存储为嵌入式文档,特别是如果您必须手动加入'那些文件经常。只是取决于您的数据以及您需要如何查询它。 YMMV