用 MongoDB/Morphia 中的对象声明性地包装数组元素

Declaratively wrap array elements with objects in MongoDB/Morphia

我有一个遗留的数据库结构,其中每个数组元素都包装为一个键值:

"field" : [
  {
    "_id" : ObjectId("123456789012345678901234")
  }, {
    "_id" : ObjectId("123456789012345678901235")
  }
]

我可以在 Java 中建模而不引入中间对象吗? 例如。像

@SomeMagicAnnotation("_id")
List<ObjectId> field;

Morphia 需要一个 class 结构来映射,因为这些文件。但是,您可以使用 @PostLoad 遍历该数组并创建一个仅包含 ObjectId 值的新数组。一旦你有了这个新数组,你就可以用 put("field", newArray) 把它放回 DBObject 中。这将使它看起来像 Morphia 的 ObjectID 值的裸数组,然后 Morphia 可以将其映射到您的 List<ObjectID>.