Pour votre premier problème, MongoDB a upsert donc
db.collection.update(
{query for id},
{document},
{upsert: true}
)
ou dans le pilote Java
yourCollection.update(searchObject, modifiedObject, true, false);
Si vous souhaitez définir un ID personnalisé, il vous suffit de définir le _id
clé manuellement, c'est-à-dire
yourBasicDBObject.put("_id",yourCustomId)
il vous suffit de vous assurer qu'il est unique pour chaque document.
Vous devrez également définir le _id
dans votre modifiedObject
sinon un nouveau sera généré.
Quant aux opérations en masse , en définissant simplement un ID personnalisé pour chaque document en donnant le _id
clé devrait également fonctionner.