5

オブジェクト全体ではなくフィールドをクエリする方法は? 私はそのようなことをしようとしていますが、それが可能かどうかを確認したいですか?

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);    
}
4

2 に答える 2

7

メソッドで

find(Query query, Class<YourCollection> entityClass)

entityClassは、id のタイプではなく、対応するコレクションである必要があります。

ID の使用を取得しようとしている場合

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

_id のみを含めると、他のすべてのフィールドは結果で null になります。

于 2013-03-25T07:43:14.230 に答える
0

シリアライゼーションを回避したい場合は、これを処理する方法の 1 つです:-

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());
    }
});
于 2016-03-15T08:50:48.557 に答える