nutzmongo icon indicating copy to clipboard operation
nutzmongo copied to clipboard

自定义的_id值查询 的时候有问题

Open Rekoe opened this issue 7 years ago • 7 comments

如果自定义的字符串类型的_id 会报 ObjectId 验证问题

ZMoDoc old = zMoCo.findOne(ZMoDoc.ID("rekoe"));

错误

2017-08-23 17:23:35,633 [DEBUG][org.mongodb.driver.protocol.query] - Query completed
Exception in thread "main" java.lang.RuntimeException: 'rekoe' not ObjectId
	at org.nutz.lang.Lang.makeThrow(Lang.java:132)
	at org.nutz.mongo.ZMoDoc.put(ZMoDoc.java:497)
	at org.nutz.mongo.ZMoDoc.putAll(ZMoDoc.java:558)
	at org.nutz.mongo.ZMoDoc.NEW(ZMoDoc.java:41)
	at org.nutz.mongo.ZMoDoc.NEW(ZMoDoc.java:82)
	at com.anawin.mongo.StudentService.fetch(StudentService.java:55)
	at com.anawin.mongo.StudentTest.main(StudentTest.java:16)

Rekoe avatar Aug 24 '17 06:08 Rekoe

@zozoh

Rekoe avatar Aug 24 '17 06:08 Rekoe

用的最新版的 nutzmongodb

Rekoe avatar Aug 24 '17 06:08 Rekoe

_id只能是ObjectId,其他不合法的

wendal avatar Aug 24 '17 08:08 wendal

有些时候 会自定义_id值 这情况下 就不能用了 但命令行是支持的 @wendal

Rekoe avatar Aug 24 '17 08:08 Rekoe

额,完全没有考虑到这个情况哦。 我都是自己开一个字段存自定义 ID 的 -_-!

好像还不太好改

zozoh avatar Sep 04 '17 10:09 zozoh

+1.我们用的都是uuid。不过话又说回来。我没有用nutzmongo额。

ansjsun avatar Sep 05 '17 02:09 ansjsun

ZMoDoc doc = ZMoDoc.NEW();
doc.setDBobj(new BasicDBObject("_id", "rekoe"));
DBCursor cursor = zMoDB.c("Student").find(doc);

@ansjsun 这样来用

Rekoe avatar Sep 05 '17 02:09 Rekoe