【问题标题】:Questions regarding mongodb sub-document and spring-data-mongo querying关于mongodb子文档和spring-data-mongo查询的问题
【发布时间】:2012-11-26 11:13:15
【问题描述】:

我仍在尝试了解mongodb 以及如何映射最佳实体。例如:实体用户和实体地址。当某人来自jpa 背景时,可能会有one-to-many。在 mongo 我不想使用dbref。所以地址在用户的Set 集合中。

假设我使用的是spring-data-mongo

问题 1:用户和地址都应该有@Document 注释吗?还是只有用户?

问题 2:查询用户地址的最佳方式是什么。一开始有可能吗?因为现在我通过usernameId查询得到User,然后得到用户的地址。我可以直接查询sub-document吗?如果是,如何使用spring-data-mongo Criteria Query 完成:

@Document
public class User{
    @Id
    private Long ID;
    private String username;
    private Set<Address> addresses = new HashSet<Address>();
    ...
} 

@Document
public class Address {
   @Id
   private Long ID;
   private String city;
   private String line1;
   ...

}

【问题讨论】:

    标签: mongodb mapping spring-data spring-data-mongodb


    【解决方案1】:

    问题 1:不,@Document 完全没有必要。如果您为文档类激活类路径扫描,我们只会在应用程序启动时利用它。如果您不这样做,则将在第一次持久性操作时完成持久性元数据扫描。然后我们遍历域对象的属性,所以Address会被发现。

    问题 2:您必须完全阅读 User 对象,因为 MongoDB 目前不允许返回子文档。因此,您必须查询整个Userdocument,但可以使用fieldSpec 对象上的fieldSpec 或存储库抽象的@Query 注释来限制返回到addresses 字段的字段(请参阅@987654321 @)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 2014-01-09
      • 2017-05-02
      • 2016-07-11
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多