I am writing custom query in mongo repository like this :
public interface AuthenticationTokenRepository extends MongoRepository<AuthenticationToken, String>
{
AuthenticationToken save(AuthenticationToken token);
AuthenticationToken findByToken(String token);
@Query("{'user.username' : ?0}")
AuthenticationToken findByUserId(String username);
}
But when i tried to findout AuthenticationToken by id then it is not working.
@Query("{'user._id' : ?0}")
AuthenticationToken findByUserId(String userId);
My data in authentication table is as following:
> 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" : "dinesh.dhiman@oodlestechnologies.com",
"firstName" : "Dinesh Dhiman",
"email" : "dinesh.dhiman@oodlestechnologies.com",
"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")
}
I want to fetch data on the basis of userId. Can anyone help me.
In some versions of Spring you must use ObjectId class instead of String.
So you can try something like this
If you want to use this query in code, it will look something like this
I tried the same example. Try this sample code. It worked for me.