Morphia返回所有文档字段的字符串列表

fic*_*ion 2 java mongodb morphia

如果我收集了以下要素,

@Entity
public void MyEntity{
  public String name;
  public String type;
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想返回的不是元素List<String>(或Set),而是它们的name字段。

List<String> allNames = datasotre.find(MyEntity.class).asList("name");
Run Code Online (Sandbox Code Playgroud)

这是示例查询,没有这样的Morphia数据存储方法。

InP*_*uit 5

要限制返回的字段,请在Query上调用“ retrievedFields”方法。例如,仅获取所有MyEntity对象的名称字段:

datastore.find(MyEntity.class).retrievedFields( true, "name").asList()
Run Code Online (Sandbox Code Playgroud)

编辑-只要您不介意列表仅包含唯一值(即没有重复的名称),就可以使用以下查询获取列表字符串:

DBCollection m = datastore.getCollection( MyEntity.class );
List names = m.distinct( "name", new BasicDBObject() );
Run Code Online (Sandbox Code Playgroud)

“名称”列表将仅包含字符串。