En raison de la nature GWT de ma demande, je ne peux pas utiliser directement le ObjectId dans mon code
oui vous pouvez si vous utilisez RequestFactory (et que vous utilisez RPC maintenant) .
@Id Chaîne id; au lieu. C'est la même chose avec @Id ObjectId id? Au moins à le niveau mongodb? Je veux dire dans la façon dont c'est le magasin, son format.
ce que cela répond à votre question:
> 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
>
Aussi, est-il un moyen de récupérer les documents en fonction de l'emplacement relatif d'une chaîne id ou donner ObjectId? Comme avant ou après un ObjectId spécifique?
oui, par exemple:
> 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 }
>
Comment générer String id? Vous devez vous assurer que les ID générés augmentent (tel que défini par mongo) si vous voulez avoir des requêtes avant/après. – milan