Morphia - 基于子文档的查询

Pi *_*rse 0 mongodb morphia mongodb-query

我有一个mongo集合,其文档如下所示:

{
"_id" : ObjectId("9873214jkhdkfjdsf8324"),
"nm" : "test",
"sts" : 1,
"updby" : NumberLong(0),
"tags" : [ 
    {
        "name" : "women", 
        "rank" : 1, 
        "type" : 3 
    }, 
    {
        "name" : "men",
        "rank" : 1
    }, 
    {
        "name" : "clothing",
        "rank" : 2,
        "type" : 1
    }
]
Run Code Online (Sandbox Code Playgroud)

}

我想查询集合,以便我想要所有具有"名称"的文档:"women"和"type":3在返回的每个文档的tags子文档中.

我知道mongo查询应该是这样的:

db.collection.find("tags":{
            $all:[
                {"$elemMatch":{"name":"women","type":3}},               
            ]})
Run Code Online (Sandbox Code Playgroud)

我尝试使用morphia提供的'hasthiselement',但我无法形成我想要的确切查询.

 getMongoDAORead().getDatastore().createQuery(test.class)
                .field("tags").hasThisElement("name").equal("women");
Run Code Online (Sandbox Code Playgroud)

此查询似乎不正确.有人可以帮我形成正确的查询吗?

Pi *_*rse 5

我通过执行以下操作来解决此问题:

我创建了一个Tags类的对象并对其进行了初始化:

Tags tag = new Tags("women", null, 3);

Query<MyClass> t = getMongoDAORead().getDatastore()
        .createQuery(MyClass.class)
        .field("ctags").hasThisElement(tag);
Run Code Online (Sandbox Code Playgroud)