2015-05-27 3 views
1

Я пишу пользовательский запрос в хранилище Монго так:запись пользовательских запросов в хранилище MongoDB

public interface AuthenticationTokenRepository extends MongoRepository<AuthenticationToken, String> 
{ 

    AuthenticationToken save(AuthenticationToken token); 

    AuthenticationToken findByToken(String token); 

    @Query("{'user.username' : ?0}") 
    AuthenticationToken findByUserId(String username); 
} 

Но когда я попытался Findout AuthenticationToken по идентификатору, то он не работает.

@Query("{'user._id' : ?0}") 
     AuthenticationToken findByUserId(String userId); 

Мои данные в таблице аутентификации заключается в следующем:

> db.authenticationToken.find().pretty() 
{ 
    "_id" : ObjectId("5565b4d444ae3b1a9228be87"), 
    "_class" : "com.samepinch.domain.user.AuthenticationToken", 
    "token" : "545c1d10-d769-41cf-a47c-2d698ec4df72", 
    "user" : { 
     "_id" : ObjectId("5565b4d444ae3b1a9228be86"), 
     "age" : 0, 
     "username" : "[email protected]", 
     "firstName" : "Dinesh Dhiman", 
     "email" : "[email protected]", 
     "gender" : "male", 
     "createdDate" : ISODate("2015-05-27T12:13:08.562Z"), 
     "updatedDate" : ISODate("2015-05-27T12:13:08.562Z") 
    }, 
    "createdDate" : ISODate("2015-05-27T12:13:08.605Z"), 
    "updatedDate" : ISODate("2015-05-27T12:13:26.436Z") 
} 

Я хочу, чтобы получить данные на основе USERID. Может кто-нибудь мне помочь.

+1

нет поля идентификатора пользователя в документе – gypsyCoder

ответ

0

Я попробовал тот же пример. Попробуйте этот образец кода. Это сработало для меня.

@Query("{user._id:?0}") 
AuthenticationToken findByUser(String userId); 
0

В некоторых версиях Spring вы должны использовать ObjectId класс вместо Строка.
Таким образом, вы можете попробовать что-то вроде этого

@Query("{'user._id' : ?0}") 
    AuthenticationToken findByUserId(ObjectId objectId); 

Если вы хотите использовать этот запрос в коде, он будет выглядеть примерно так

String userId = "someUserId"; 
repository.findByUserId(new ObjectId(userId)); 
Смежные вопросы