我怎样才能直接访问嵌入式文档对象mongodb

时间:2014-07-18 09:16:18

标签: java mongodb spring-data-mongodb

这是我的文件

{
  "_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);如何从该事件对象中获取跟踪?

1 个答案:

答案 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);

但与所有项目一样,“字段”列表全部或全部。因此,您要么指定所有字段以匹配结果类,要么将结果类修改为您希望返回的字段。