当前位置: 首页 > 知识库问答 >
问题:

MongoDB Panache返回写操作无效

端木朝
2023-03-14

在“普通的”MongoDB中,对DB执行写入操作的方法(如.insertone()或.deleteOne())将分别返回insertoNeResultdeleteResult。这些对象将返回accounted的布尔值和id(如果适用)。这允许我们确保写操作成功。

但是,通俗地说,mongooperations.class返回的是void:

MongoOperations.Class

private static void persist(MongoCollection collection, Object entity) {
    collection.insertOne(entity);
}

那么问题是,我们如何检索得到的InsertResultDeleteObject对象?

正在使用pom依赖项

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-mongodb-panache</artifactId>
    <version>1.5.0.Final</version>

共有1个答案

武元白
2023-03-14

这是一个设计上的选择。

我们选择使用Panache使MongoDB尽可能接近使用Panache的Hibernate,因此persist()delete()返回void。

我们也不想公开MongoDB相关的API(因此不返回insertoResultdeleteresult)。

以下是一些答案:

  • ID是在插入数据库之前计算的,您可以在调用persist()操作后从实体中检索它,它将由MongoDB驱动程序填充。
  • MongoDB的默认写操作是w:1,这意味着如果主节点(或独立节点)确认了操作,则操作将成功。这意味着默认情况下,如果对persist()的调用没有引发异常,则操作已被确认。除非使用w:0的写操作来配置MongoDB,否则只要persist()操作成功,就意味着文档已插入数据库。
  • 对于delete()操作,适用相同的写入关注规则。但是我们没有检查文档已经被删除(我们没有检查deletedCount为1),也许这是一个oversigth,我们可能已经做到了。如果您认为我们应该这样做,您可以在Quarkus Github存储库中打开一个问题(这可能会破坏向后兼容性,因此我们需要对此保持谨慎)。
 类似资料:
  • 我一辈子都搞不懂这件事。我需要第二双眼睛。。。或者更好的大脑。我正在尝试让这个“Hello Triangle”python示例正常工作。我一直在翻译c教程中的内容。然而,无论我做什么,我总是会遇到这个错误。 我的代码如下。我在Mac上运行,所以你会注意到其中有些东西可能不是PC所需要的。在glDrawArrays出现之前,一切都正常。我知道C版openGL与使用pyOpenGL的python之间的

  • 下一个metod在TokenService类中。

  • 本文向大家介绍Android实现返回键操作思路,包括了Android实现返回键操作思路的使用技巧和注意事项,需要的朋友参考一下 记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList 捕获用户的返回键操作,响应返回键,返回上一个界面 MainActivity.java MiddleManager.java 以上就是本文的全部内容,希望对大家的学习有所帮

  • 我一直在使用Spring Cache抽象和ehCache。我在目标方法上使用@Cacheable注释,如下所示: 注意:如果我没有在@cacheable注释中指定“key”,那么它可以工作。 有什么我忘了说明的吗?配置?注释?

  • 在我的舱单中: 主要活动

  • 使用Java8流,当输入整数没有输出时,映射的最佳方法是什么? 简单地返回NULL?但现在我的输出列表大小将小于我的输入大小...