Para su primer problema, MongoDB tiene upsert entonces
db.collection.update(
{query for id},
{document},
{upsert: true}
)
o en el controlador Java
yourCollection.update(searchObject, modifiedObject, true, false);
Si desea establecer una ID personalizada, simplemente configure el _id
clave manualmente, es decir,
yourBasicDBObject.put("_id",yourCustomId)
solo tiene que asegurarse de que sea único para cada documento.
También deberá configurar el _id
en su modifiedObject
de lo contrario, se generará uno nuevo.
En cuanto a las operaciones a granel , simplemente configurando una ID personalizada para cada documento dando el _id
la clave también debería funcionar.