MongoDB 返回字段为空
MongoDB returning field as null
我目前正在开发连接到 MongoDB 实例的应用程序。我遇到问题,我的对象的 'id' 字段在应用程序中没有被 returned 给我,而是被 returned 为 null。
架构具有如下定义的 'entity':
{
"entity_id": String,
"parent": String,
"relevance": boolean
}
我正在使用 Java 同步驱动程序 (4.4.1) 查询集合,如下所示:
try {
Entity testDoc = collection.find(eq("entity_id", entity_id)).first();
if (testDoc != null) {
//add entity to a list
}
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Failed to get Entity", e);
}
出于某种原因,当我查询 entity_id 除外时,这会为我提供对象中的每个字段。我一直收到此 returned 为:
entity_id=空
有两件事让我印象深刻。第一个是每个其他字段都是一个字符串(最初 Id 是一个 UUID 对象,但我在故障排除时进行了简化)并且如果是其他字段,它们仍然 return 。第二个是这个空值之前有一个空格,就好像它正在被格式化一样。其他空值 return 作为 field=null 而不是 field= null
我想看看是否有一些安全设置阻止事物被标记为 *_id 或 *id 被 returned 但我没有找到这样的例子。
编辑:为清楚起见,这里是实体 Pojo
public class Entity {
@BsonProperty(value = "entity_id")
private String entityID;
@BsonProperty(value = "parent")
private String parent;
@Deprecated
@BsonProperty(value = "relevance")
private boolean relevance;
public Entity() {}
public Entity(String entityID, String parent, Boolean relevance) {
this.entityID = entityID;
this.parent = parent;
this.relevance = relevance;
}
public String getEntityID() {
return entityID;
}
public void setEntityID(String entityID) {
this.entityID = entityID;
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public boolean isRelevant() {
return relevance;
}
public void relevance(boolean relevance) {
this.relevance = relevance;
}
}
因此,请为观看此内容的任何人更新,这似乎是我的 Eclipse IDE 的问题。
我将项目重新导入IntelliJ Community Edition 并重建了Maven 项目等...这样做之后,测试用例通过了,我的entityID returns 在查询中。希望如果其他人遇到这个问题,他们可以做类似的事情。
我目前正在开发连接到 MongoDB 实例的应用程序。我遇到问题,我的对象的 'id' 字段在应用程序中没有被 returned 给我,而是被 returned 为 null。
架构具有如下定义的 'entity':
{
"entity_id": String,
"parent": String,
"relevance": boolean
}
我正在使用 Java 同步驱动程序 (4.4.1) 查询集合,如下所示:
try {
Entity testDoc = collection.find(eq("entity_id", entity_id)).first();
if (testDoc != null) {
//add entity to a list
}
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Failed to get Entity", e);
}
出于某种原因,当我查询 entity_id 除外时,这会为我提供对象中的每个字段。我一直收到此 returned 为:
entity_id=空
有两件事让我印象深刻。第一个是每个其他字段都是一个字符串(最初 Id 是一个 UUID 对象,但我在故障排除时进行了简化)并且如果是其他字段,它们仍然 return 。第二个是这个空值之前有一个空格,就好像它正在被格式化一样。其他空值 return 作为 field=null 而不是 field= null
我想看看是否有一些安全设置阻止事物被标记为 *_id 或 *id 被 returned 但我没有找到这样的例子。
编辑:为清楚起见,这里是实体 Pojo
public class Entity {
@BsonProperty(value = "entity_id")
private String entityID;
@BsonProperty(value = "parent")
private String parent;
@Deprecated
@BsonProperty(value = "relevance")
private boolean relevance;
public Entity() {}
public Entity(String entityID, String parent, Boolean relevance) {
this.entityID = entityID;
this.parent = parent;
this.relevance = relevance;
}
public String getEntityID() {
return entityID;
}
public void setEntityID(String entityID) {
this.entityID = entityID;
}
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public boolean isRelevant() {
return relevance;
}
public void relevance(boolean relevance) {
this.relevance = relevance;
}
}
因此,请为观看此内容的任何人更新,这似乎是我的 Eclipse IDE 的问题。
我将项目重新导入IntelliJ Community Edition 并重建了Maven 项目等...这样做之后,测试用例通过了,我的entityID returns 在查询中。希望如果其他人遇到这个问题,他们可以做类似的事情。