在 mongodb 存储库中编写自定义查询
问题描述:
我正在像这样在 mongo 存储库中编写自定义查询:
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);
}
但是当我尝试通过 id 查找 AuthenticationToken 时,它不起作用.
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")
}
我想根据 userId 获取数据.谁能帮帮我.
I want to fetch data on the basis of userId. Can anyone help me.
答
在某些 Spring 版本中,您必须使用 ObjectId 类而不是 String.
所以你可以尝试这样的事情
In some versions of Spring you must use ObjectId class instead of String.
So you can try something like this
@Query("{'user._id' : ?0}")
AuthenticationToken findByUserId(ObjectId objectId);
如果你想在代码中使用这个查询,它看起来像这样
If you want to use this query in code, it will look something like this
String userId = "someUserId";
repository.findByUserId(new ObjectId(userId));