例如,我有两个收藏品“动物”和“食物”。 在收集“动物”中有一种野外食物,其参考收集“食物”(未嵌入)。 我使用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。 那么获取对象“食物”字段的正确方法是什么?
答案 0 :(得分:0)
简短的回答是,您无法在MongoDB中自动执行此类操作。它没有“加入”的概念。您只需要进行单独查询。
documentation on Database Reference的这一部分应该有助于澄清。
要解析DBRefs,您的应用程序必须执行其他查询才能返回引用的文档。许多驱动程序都有辅助方法,可以自动形成DBRef的查询。驱动程序[1]不会自动将DBRef解析为文档。 DBRefs提供了一种通用格式和类型来表示文档之间的关系。如果数据库必须与多个框架和工具交互,DBRef格式还提供了用于表示文档之间链接的通用语义。
通常情况下,最好将内容存储为嵌入式文档,特别是如果您必须手动加入'那些文件经常。只是取决于您的数据以及您需要如何查询它。 YMMV