由于我的应用程序的GWT性质,我不能直接在我的代码中使用ObjectId
,所以我使用了:
@Id String id;
。与@Id ObjectId id一样吗?至少在mongodb级?我的意思是它的存储方式,它的格式。
另外,有没有办法根据给定String id或ObjectId的相对位置检索文档?像特定ObjectId之前或之后一样?
答案 0 :(得分:1)
由于我的应用程序的GWT性质,我无法直接使用 我的代码中的ObjectId
是的,如果你使用RequestFactory(现在你正在使用RPC),你可以。
@Id String id;代替。与@Id ObjectId id一样吗?至少在 mongodb水平?我的意思是它的存储方式,它的格式。
这是否回答了你的问题:
> db.foo.findOne({_id : ObjectId("4f156018ef7b8b0317a8ad18")})
{
"_id" : ObjectId("4f156018ef7b8b0317a8ad18"),
"a" : 2,
"b" : 4,
"c" : 5,
"d" : 1
}
> db.foo.findOne({_id : "4f156018ef7b8b0317a8ad18"})
null
> "4f156018ef7b8b0317a8ad18" == ObjectId("4f156018ef7b8b0317a8ad18")
true
>
另外,有没有办法根据亲戚检索文件 来自给定String id或ObjectId的位置?像之前或之后一样 具体的ObjectId?
是的,例如:
> db.foo.find()
{ "_id" : ObjectId("4f156018ef7b8b0317a8ad18"), "a" : 2, "b" : 4, "c" : 5, "d" : 1 }
{ "_id" : ObjectId("4f156022ef7b8b0317a8ad19"), "a" : 4, "b" : 1, "c" : 3, "d" : 2 }
{ "_id" : ObjectId("4f17e667ef7b8b0317a8ad1d"), "a" : 4, "b" : 1, "c" : 3, "d" : 2 }
> db.foo.find({_id : {$gt : ObjectId("4f156022ef7b8b0317a8ad19")}})
{ "_id" : ObjectId("4f17e667ef7b8b0317a8ad1d"), "a" : 4, "b" : 1, "c" : 3, "d" : 2 }
>
答案 1 :(得分:0)
商店格式不一样,对于@Id String id,它存储为:
{_id: "4f115016db84b77e57732f4a", ...}
,而对于@Id对象ID,则为{_id: ObjectId("4f115016db84b77e57732f4a"), ...}
_id字段始终编入索引。但是很难理解_ids之间“之前”/“之后”关系的语义。如果它是唯一生成的UUID或ObjectID,那么就String的比较函数而言,该顺序可能完全是随机的。您使用此订单关系的用例是什么?