MongoDB(或Morphia)条件引用

MongoDB (or Morphia) conditional reference

我有一个 MongoDB 集合 C,其模式包含对另一个集合 D 的手动引用,我在 Java 中使用 Morphia 来管理 C 和 D。D 有一个布尔字段b 在它的模式中,我想验证我对 b 的引用(即当一个新文档 c 被写入集合 C 时,如果它的引用指向 D 集合中的某个实体 d ,那么如果 d 的布尔值 b 是false,那么 MongoDB 应该会抛出一个错误。

为了描述得更具体一点,假设您有 2 个标准 POJO 来表示 MongoDB 集合模式:

class C {
    @Id
    public String id;

    @Reference
    public D target; 
}

class D {
    @Id
    public String id;

    public boolean b;
}

基于此架构,示例插入操作如下所示 (JSON):

{
    "target" : { "id": "MY_FANCY_ID" }
    //There is a record with id = "MY_FANCY_ID" in collection D
}

当插入带有非空目标 (D) 的新 C 时,我想检查 target.b 是否为假,如果是,则抛出数据库错误。

1) 有没有办法在 MongoDB 中本地执行此操作?
2) 如果不是 1),那么有没有办法在 Morphia 中管理它(没有一些极其迟钝和冗长的 hack)?

谢谢!

MongoDB,你真倒霉。使用 Morphia,您可以使用 @PerPersist 之类的东西来执行额外的查询来检查该布尔值。这意味着每次保存 C 时都会进行额外的查询,除非您设计了一些快捷方式以仅在初始插入时进行查询。检查 ID 是否为空可能会有所帮助。