Мое требование: когда пользователь Mr.ABC установит приложение, оно возьмет все контакты пользователя и сохранит их в Firebase Firestore.И когда другой пользователь Mr.XYZ устанавливает приложение на свое устройство, оно берет все контакты XYZ и сохраняет их в Firebase.Точно так же, кто бы ни устанавливал приложение, он брал контакты и сохранял их в Firebase Firestore.Теперь моя операция чтения должна состоять в том, что Mr.ABC наберет номер XYZ в EditText и в firebase, мне нужно просмотреть контактную информацию XYZ, узнать номер ABC и получить имя, под которым XYZ сохранил свой контакт.Поэтому, когда ABC набирает номер XYZ, ABC может выяснить, под каким именем XYZ сохранен номер ABC.Пожалуйста, помогите мне, в какой структуре я должен сохранить контакты в базе данных и как я могу прочитать данные.Я хотел бы знать эффективный способ сделать это.Так как я плохо разбираюсь с базой данных, мне поможет более точный код.Пожалуйста, помогите. 
Я попробовал приведенный ниже код, но в Firestore хранится только 800 контактов, а не 2500, более того, я не уверен, что используемая структура БДправильно или неправильно.У меня нулевые знания по БД.
private void doUploadContactstoCloud() {
dialog.setCancelable(false);
dialog.setMessage("Please wait we are configuring your request ...");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.show();
listContacts = new ContactPresenter(this).fetchAllContacts();
int j = listContacts.size();
Log.d("sizejhfg",j+"");
double size = listContacts.size();
double ind = 0;
Map<String, Object> contact = new HashMap<>();
// Get a new write batch
WriteBatch batch = db.batch();
for (Contact con : listContacts) {
for (int i = 0; i < con.numbers.size(); i++) {
String number = formatnum(con.numbers.get(i).number);
if (number != null) {
if (!number.equals("0") && number.length() < 5) {
Map<String, Object> contactnumber = new HashMap<>();
contactnumber.put("name", con.name);
contactnumber.put("number", number);
contact.put(number,contactnumber);
DocumentReference item = db.collection(tonumber).document(number);
batch.set(item,contactnumber);
ind++;
if(ind==500){
doCommit(batch);
batch=db.batch();
ind=0;
}
}
}
}
//dialog.setProgress((int) (ind / size) * 100);
}
if(ind>0){
doCommit(batch);
}
prefManager.setisContactUpload(true);
doDismissDialog();
}`