2012-04-14 2 views
1

Ma question est la même que celle ci-dessous, sauf que je veux utiliser le pilote java pour le faire.Personnaliser _id pour GridFS utilisant le pilote java

create own files_id in mongo GridFs using PHP

Le lien googlegroup donné en question ci-dessus pour le pilote Java est en fait pour le pilote C#. En vérifiant l'API GridFS du pilote Java, il semble qu'il n'y ait aucun moyen de définir le champ _id pour la collection de fichiers GridFS.

Y at-il un moyen de faire cela avec le pilote Java, cela créerait beaucoup de désordre inutile si je devais passer à l'aide d'un autre pilote?

+0

Cela ne semble pas possible actuellement, mais est soulevé comme une amélioration ici: https://jira.mongodb.org/browse/JAVA-525 Serait-il possible de modifier votre conception jusqu'à ce que cela soit mis en œuvre? par exemple. contenir un ID de fichier dans le (s) document (s) lié (s) – samlewis

+0

Le problème de base que j'essaie de résoudre ici est le sharding de la collection 'chunks' de GridFS qui dépend totalement de l'ID_fichier. S'il y a un moyen d'ajouter des champs supplémentaires à la collection 'chunks', je suis ouvert à tout. –

+0

Le cas jira ci-dessus est maintenant corrigé, nous espérons qu'il sera disponible dans la prochaine version. Seulement si Casbah pouvait rapidement intégrer le changement! –

Répondre

0

La méthode Put de la classe GridFSInputFile sert à ajouter des champs supplémentaires à l'objet JSON. Donc, si vous ajoutez un champ "_id" qui est ObjectId par défaut, il remplacera ObjectId.

J'ai essayé le code suivant sur la version 2.2.3 et cela a fonctionné.

GridFSInputFile gif = gridfs.createFile(new File("c:\\image.jpg")); 
gif.put("_id", 1234567); 
gif.save(); 

La collection de fichiers contient 1234567 comme prévu. La collection de morceaux a la même valeur que file_id.

Questions connexes