在 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));