java - 如何在java中获取插入MongoDB的最后一个特定文档

标签 java mongodb

我对 MongoDB 和 Java 很陌生,我需要做一个非常简单的查询:获取插入集合中的对象的最后一个文档。如果我使用 mongo shell,我使用 $last 然后我输入 key value 和时间戳字段来获取最后一个文档,但使用 java 驱动程序(3.0.4)我什么也没发现关于最后语句

最佳答案

不要依赖 MongoDB 始终按插入顺序返回文档。 MongoDB 不保证它会保持一致。当集合因删除和更新而变得碎片化时,MongoDB 可能会在中间某处插入新文档。

作为替代解决方案,您可以按时间戳字段或 _id(自动生成的 ObjectID 以创建它们的时间戳开始)对结果进行降序排序。降序索引可以大大提高性能。

顺便说一句:当您这样做的原因是因为您想对刚刚插入同一进程中的文档执行某些操作时,那么这可能是一个非常脆弱的解决方案。当多个进程同时插入文档时,一个进程可能会获取到另一个进程插入的文档。当您想要插入文档并维护句柄以便稍后可以更改同一文档时,请考虑通过创建 new ObjectID() 在 Java 中手动分配 _id 。然后您可以稍后使用该 ObjectID 来引用该文档。

关于java - 如何在java中获取插入MongoDB的最后一个特定文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32949473/

相关文章:

java - 持久化类中的构造函数

javascript - 如何在 google recaptcha 中设置本地化

javascript - 我想知道我的代码中的 {blogs : blogs}, 是什么意思

php - 迭代 mongodb 查询返回的数组

mongodb 多个组在一个结果中

java - 限制文本字段输入

java - 可重置的 Java 计时器

java - 无法使用maven导入库

mongodb - Mongo $group 和 $project

node.js - 在嵌套数组的每个项目中重新映射ObjectId数组