Spring数据+ Mongodb +查询单值?

时间:2013-03-25 05:31:39

标签: spring mongodb

如何查询字段而不是整个对象?我想做那样的事情,想看到那可能吗?

public BigInteger findUserIDWithRegisteredEmail(String email){

    Query query = Query.query(Criteria.where("primaryEmail").is (email));    
    query.fields().include("_id");

    return (BigInteger) mongoTemplate.find(query, BigInteger.class);    
}

2 个答案:

答案 0 :(得分:6)

方法

find(Query query, Class<YourCollection> entityClass)

entityClass 应该是相应的集合,而不是id的类型。

如果您只是想尝试使用

Query query = Query.query(Criteria.where("primaryEmail").is (email));    
query.fields().include("_id");
mongoTemplate.find(query, <YourCollection>.class).getId();

如果您只包含_id,则结果中的所有其他字段都将为空。

答案 1 :(得分:0)

如果您想避免序列化,这是您可以处理它的一种方法: -

final List<String> ids = new ArrayList<String>();
mongoTemplate.executeQuery(query, "collectionName", new DocumentCallbackHandler() {
    @Override
    public void processDocument(DBObject dbObject) throws MongoException, DataAccessException {
        ids.add(dbObject.get("_id").toString());
    }
});