MongoOperations“ID”选择返回null
问题描述:
我使用的弹簧数据的MongoDB 1.1.1.RELEASE任何查询MongoOperations界面使用“身份证”作为选择返回null:Query.query(Criteria.where("id").is("5X")))
MongoOperations“ID”选择返回null
然而,当我使用带有Java驱动程序的Mongo类并运行查询,它按预期工作。即:dbCollection.find(Query.query(Criteria.where("id").is("5X")).getQueryObject()));
基于我的研究,这应该适用于MongoOperations接口,并且选择器“id”不应该与“_id”选择器冲突。有没有人遇到这个问题,或任何人知道发生了什么?
答
原因是没有id
,但有_id
- 试试。在mongodb中,PK默认字段具有“_id”名称。
如果你需要找到只有身份证件,所以如果你使用Spring你不使用类似findById(id)
在mongoTemplate或做这样的事情:
DBCollection coll = db.getCollection(getCollectionName());
DBObject searchById = new BasicDBObject("_id", new ObjectId(idString));
DBObject found = coll.findOne(searchById);
春天蒙戈尝试:
YourObject obj= mongoTemplate.findOne(new Query(Criteria.where("id").is("5X")), YourObject.class, "yourCollectionName");
答
它不喜欢名称为“id”的非文档ID的字段。使用@Field(“id”)注释将其映射到类中。
import org.springframework.data.mongodb.core.mapping.Field;
...
@Field("id")
public int id;
检查你的第二个代码行。它在'id'后缺少一个报价。 – user 2013-03-05 16:19:45
@ user2116627你在同一个文档中有'id'和'_id'字段吗? – n1ckolas 2013-03-05 16:43:59
我仍然在寻找这个答案:( – RafatMunshi 2017-11-01 04:51:00