【发布时间】:2018-08-22 21:24:05
【问题描述】:
我有一个 MongoDB 集合 C,其架构包含对另一个集合 D 的手动引用,我使用 Java 中的 Morphia 来管理 C 和 D。D 在其架构中有一个布尔字段 b,我想验证我对 b 的引用(即,当将新文档 c 写入集合 C 时,如果它的引用指向 D 集合中的某个实体 d,那么如果 d 的布尔值 b 为假,那么 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是否为false,如果是,则抛出数据库错误。
1) 有没有办法在 MongoDB 中本地执行此操作?
2) 如果不是 1),那么有没有办法在 Morphia 中进行管理(没有一些极其迟钝和冗长的 hack)?
谢谢!
【问题讨论】:
-
也许你应该在 C.setTarget() 中添加验证
-
问题是我希望C尽可能地成为POJO,我不想在我的POJO中注入Datastore。