如果该字段已从映射的 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
,而不是尝试混合实体来保存数据。
假设 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
,而不是尝试混合实体来保存数据。