Невозможно обновить вышитый MongoDB существующий документ только на одну строку (с помощью Android Studio) - PullRequest
0 голосов
/ 17 января 2019

Невозможно обновить вышитый 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);
                                         }
                                     }
                                 });

Но я искал просто заполнение одной строки паролем новыми данными

...