这是我的文件
{
"_id":"1000",
"event_name":"Some name",
"tracks":
[
{
"id":"100"
"title":"Test title",
},
{
"id":"101"
"title":"Test title 2",
}
]
}
我想直接使用id 101进行跟踪
到目前为止,我正在做这个
Query query = new Query(Criteria.where("tracks.$._id").is(id));
// Execute the query and find one matching entry
Event event= mongoTemplate.findOne(query, Event.class,MongoDBCollections.EVENT);
我想要一些像这样的东西
Track track = event.getTrackById(id);如何从该事件对象中获取跟踪?
答案 0 :(得分:3)
您在错误的位置使用位置运算符,它是一个“投影”修饰符,不是查询的一部分。您可以使用.include()
方法在查询规范中添加字段:
Query query = new Query(Criteria.where("tracks._id").is(id);
query.fields().include("tracks.$");
Event event = mongoTemplate.findOne(query,Event.class,MongoDBCollections.EVENT);
但与所有项目一样,“字段”列表全部或全部。因此,您要么指定所有字段以匹配结果类,要么将结果类修改为您希望返回的字段。