我对 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/