You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Mongo Morphia 2时旧版datastore.get查询方法如何改写

Morphia 2版本get()方法正确改写方案

旧版Morphia 1.x的datastore.get(Class<T> type, Object id)本质是按MongoDB默认主键_id字段等值查询单条记录,你当前的写法唯一错误是字段名多写了一个下划线,MongoDB主键固定为_id而非_id_。

推荐两种功能完全等价的改写方式,和旧版get()的返回逻辑、性能表现完全一致:

  • 优先用Morphia 2封装的id查询方法,写法更简洁:
return datastore.find(type).id(id.toUUID()).first();
  • 也可以用你最初的写法修正字段名即可:
return datastore.find(type).field("_id").equal(id.toUUID()).first();

补充说明:

  • 两种写法查询不到匹配记录时都会返回null,和旧版get()方法行为完全一致,不需要额外调整空值处理逻辑
  • 所有集合默认携带_id索引是MongoDB的默认行为,按_id查询会命中主键索引,性能和旧版实现没有差异

内容的提问来源于stack exchange,提问作者nicholas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:15:04