@Id String id; это то же самое с @Id ObjectId ID? По крайней мере, на уровне mongodb? - PullRequest
0 голосов
/ 18 января 2012

Из-за природы моего приложения в GWT я не могу напрямую использовать ObjectId в своем коде, поэтому вместо него я использовал:

@Id String id;.То же самое с @Id ObjectId ID?По крайней мере, на уровне mongodb?Я имею в виду, как это магазин, его формат.

Кроме того, есть ли способ получить документы на основе относительного местоположения из заданного идентификатора String или ObjectId?Как до или после определенного ObjectId?

Ответы [ 2 ]

1 голос
/ 19 января 2012

Из-за природы моего приложения в 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 }
> 
0 голосов
/ 18 января 2012
  1. Формат хранилища не тот же, для @Id String id он сохраняется как: {_id: "4f115016db84b77e57732f4a", ...}, а для @Id Object id - {_id: ObjectId("4f115016db84b77e57732f4a"), ...}

  2. _id поле всегда индексируется.Но довольно сложно понять семантику отношений «до» / «после» между _ids.Если это уникально сгенерированный UUID или ObjectID, этот порядок может быть совершенно случайным образом с точки зрения функции сравнения String.Каков ваш вариант использования, чтобы использовать это отношение заказа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...