gpt4 book ai didi

java - MongoDB(或 Morphia)条件引用

转载 作者:行者123 更新时间:2023-12-02 10:53:32 27 4
gpt4 key购买 nike

我有一个 MongoDB 集合 C,其架构包含对另一个集合 D 的手动引用,并且我正在 Java 中使用 Morphia 来管理 C 和 D。D 在其架构中有一个 boolean 字段 b,我想验证我对 b 的引用(即,当一个新文档 c 写入集合 C 时,如果它的引用指向 D 集合中的某个实体 d,那么如果 d 的 boolean 值 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中管理这个(没有一些极其迟钝和冗长的黑客)?

谢谢!

最佳答案

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

关于java - MongoDB(或 Morphia)条件引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com