Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb MongoTemplate如何包含DBref的特定字段_Mongodb_Spring Data_Dbref_Spring Mongo - Fatal编程技术网

Mongodb MongoTemplate如何包含DBref的特定字段

Mongodb MongoTemplate如何包含DBref的特定字段,mongodb,spring-data,dbref,spring-mongo,Mongodb,Spring Data,Dbref,Spring Mongo,嗨,我有一个名为problem的结构,内部有章,章有DBref到BookEdition,BookEdition有DBref到Book Problem { String name, @DBRef Chapter chapter; } Chapter { String name, @DBRef BookEdition edition; } BookEdition { String name, Book book; } 如果我只是获取需要大量时间才能获取的问题,那么

嗨,我有一个名为problem的结构,内部有章,章有DBref到BookEdition,BookEdition有DBref到Book

Problem {
  String name,
  @DBRef
  Chapter chapter;
}
Chapter {
  String name,
  @DBRef 
  BookEdition edition;
}
BookEdition {
  String name,
  Book book;
}

如果我只是获取需要大量时间才能获取的问题,那么我只想使用fields()包含我需要的信息。include()但是我无法找到像chapter、bookedition或book这样的DBRefed字段

Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
                    .and("chapter.$id").ne(""));
            q.fields().include("id")
            .include("name")
            .include("html");
很好,但如果我只想要章节id

Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
                    and("chapter.$id").ne(""));
     q.fields().include("id")
     .include("name")
     .include("html")
     .include("chapter._id")
     .include("chapter.bookEdition.isbn13")
     .include("chapter.$bookEdition.$editionNumber")
     .include("chapter.$bookEdition.$book.subjectId")
     .include("chapter.$bookEdition.$book.title");

它不获取章节id,bookedition。我希望我能解释我的问题。有没有办法指定要包含的DBRef的特定字段

不能为DBREF定义字段规格,因为它们只能一次使用所有字段获取。通常建议不要使用DBRefs(不是我们,而是MongoDB的家伙,请参阅),但要注意应用程序代码中的关联对象。这意味着您更愿意存储一个ID,然后继续并发出一个专用查询来解析相关对象。这允许您在加载相关对象时再次使用字段规范。

FYI:DBRef就像一个“无类型”外键——MongoDB不能进行连接。那么,任何引用都是作为一个或多个附加查询独立于第一个查询获取的?我不熟悉MongoTemplate,但考虑到您使用的语法,它似乎不太可能需要额外的查询,然后只检索属性的子集。我改进了格式,但有一些分号放错了位置。你能自己修吗。