Pro váš první problém má MongoDB upsert tak
db.collection.update(
{query for id},
{document},
{upsert: true}
)
nebo v ovladač Java
yourCollection.update(searchObject, modifiedObject, true, false);
Pokud chcete nastavit vlastní ID, stačí nastavit _id
klíč ručně, tj.
yourBasicDBObject.put("_id",yourCustomId)
musíte pouze zajistit, aby byl pro každý dokument jedinečný.
Budete také muset nastavit _id
ve vašem modifiedObject
jinak bude vygenerován nový.
Pokud jde o hromadné operace , stačí nastavit vlastní ID pro každý dokument zadáním _id
klíč by měl také fungovat.