@Id String id;是否与@Id ObjectId id相同?至少在mongodb级?

时间:2012-01-18 17:58:36

标签: mongodb

由于我的应用程序的GWT性质,我不能直接在我的代码中使用ObjectId,所以我使用了:

而是{p> @Id String id;。与@Id ObjectId id一样吗?至少在mongodb级?我的意思是它的存储方式,它的格式。

另外,有没有办法根据给定String id或ObjectId的相对位置检索文档?像特定ObjectId之前或之后一样?

2 个答案:

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

  1. 商店格式不一样,对于@Id String id,它存储为: {_id: "4f115016db84b77e57732f4a", ...},而对于@Id对象ID,则为{_id: ObjectId("4f115016db84b77e57732f4a"), ...}

  2. _id字段始终编入索引。但是很难理解_ids之间“之前”/“之后”关系的语义。如果它是唯一生成的UUID或ObjectID,那么就String的比较函数而言,该顺序可能完全是随机的。您使用此订单关系的用例是什么?