如果该字段已从映射的 POJO class 中删除,如何使用吗啡从 mongo 集合中获取特定字段?

How to fetch specific field from mongo collection using morphia, if that field is removed from mapped POJO class?

假设 class “A” 如下:

    Class A{
         String fieldOne;
         String fieldTwo;}

和集合“collactionA”如下:

{
"_id" : ObjectId("5f6b2f9f97864348632356d4"),
"fieldOne" : "one",
"fieldTwo" : "two" }

现在我从 class A 中删除了字段“fieldOne”,但因为它存在于集合中,所以我想获取这个已删除字段“fieldOne”的值。

dataStore.createQuery(A.class)

使用上述方法只给出 Class A 的新定义中存在的字段(剩余的“fieldTwo”) 我怎样才能获取删除的字段(“fieldOne”)?

您必须使用驱动程序直接查询集合,以便您可以 Document 而不是 A 取回文档。 Morphia 会将文档中的所有字段映射到您实体中的任何映射字段,但它会默默地跳过获取文档中任何未映射的键。因此,您需要从数据库中获取“原始”Documents 以获取这些值。

我个人还没有尝试过,但它很有可能奏效:

var query = datastore.find("collectionA", Document.class);

这应该会从集合中获取文档,但只会停止将它们映射到 Document,而不是尝试混合实体来保存数据。