Невозможно обновить вышитый MongoDB существующий документ только на одну строку (строка пароля).
Вот так выглядит моя коллекция:
owner_id: "5c17d8b1698a5454e37cAS45"
facility_password: "123456789"
company_name: "ABS"
Единственное, что мне удалось - это заменить весь существующий документ новым:
final StitchAppClient client = Stitch.getDefaultAppClient();
final RemoteMongoClient mongoClient = client.getServiceClient
(RemoteMongoClient.factory, "mongodb-atlas");
String UserPasswordStitch = mSharedPreferences.getString
("UserPasswordSaved", "NullPassword");
final RemoteMongoCollection<Document> coll = mongoClient
.getDatabase("IronHorse_DB").getCollection("Facilities");
client.getAuth().loginWithCredential(new ServerApiKeyCredential
(UserPasswordStitch)).continueWithTask(new Continuation<StitchUser,
Task<RemoteUpdateResult>>()
{
@Override
public Task<RemoteUpdateResult> then(@NonNull Task<StitchUser>
task) throws Exception
{
if (!task.isSuccessful())
{
Log.e("STITCH", "Login failed!");
throw task.getException();
}
final Document queryDoc = new Document("owner_id", task.getResult().getId());
queryDoc.put("facility_password", oldPass);
final Document updatedDoc = new Document("owner_id", task.getResult().getId());
updatedDoc.put("facility_password", newPassFirst);
return coll.updateOne(queryDoc,updatedDoc);
}
}).addOnCompleteListener(new OnCompleteListener<RemoteUpdateResult>()
{
@Override
public void onComplete(@NonNull Task<RemoteUpdateResult> task)
{
if (task.isSuccessful())
{
showCustomToast(getString(R.string.pass_been_changed_success), R.drawable.toast_custom, Toast.LENGTH_LONG);
//recreate .this activity
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putString("onSavedFacilityPass", newPassFirst);
editor.commit();
recreate();
}
}, 1500);
//return;
}
else
{
task.getException().printStackTrace();
showCustomToast("There was a problem with changing password !", R.drawable.toast_emergency_custom, Toast.LENGTH_LONG);
}
}
});
Но я искал просто заполнение одной строки паролем новыми данными