MongoOperations“id”选择器返回null

时间:2013-03-05 16:00:54

标签: java spring mongodb

我在Spring-data-mongodb 1.1.1.RELEASE中使用MongoOperations接口,使用“id”作为选择器的任何查询都返回null:Query.query(Criteria.where("id").is("5X")))

但是,当我使用带有Java驱动程序的Mongo类并运行查询时,它按预期工作。即:dbCollection.find(Query.query(Criteria.where("id").is("5X")).getQueryObject()));

根据我的研究,这应该适用于MongoOperations接口,而选择器“id”不应与“_id”选择器冲突。有没有人遇到过这个问题,或者有人知道发生了什么事?

2 个答案:

答案 0 :(得分:3)

原因是没有id,但有_id - 尝试一下。在mongodb中,PK默认字段具有“_id”名称。

如果你只需要通过id查找文档,如果使用Spring或者做类似的事情,为什么不在mongoTemplate中使用findById(id)之类的东西:

DBCollection coll = db.getCollection(getCollectionName());
DBObject searchById = new BasicDBObject("_id", new ObjectId(idString));
DBObject found = coll.findOne(searchById);

春天mongo尝试:

YourObject obj= mongoTemplate.findOne(new Query(Criteria.where("id").is("5X")),  YourObject.class, "yourCollectionName");

答案 1 :(得分:0)

它不喜欢名为" id"的字段。这不是文件ID。使用@Field(" id")注释将其映射到类中。

import org.springframework.data.mongodb.core.mapping.Field;
...
@Field("id") 
public int id;