Я застрял в такой ситуации.У меня есть следующий документ.
{
"_id" : ObjectId("5ceba7c419b48423e452972a"),
"userId" : ObjectId("5ceba7c419b48423e4529727"),
"providers" : [
"1689736266",
"1598763690",
"1528069614",
"1831364272",
"1548463045",
"1245301159",
"1386616399",
"1790775971",
"1629462130",
"1992169783"
],
"countByType" : {
"doctors" : 6,
"labs" : 0,
"hospitals" : 0,
"imagingCenters" : 0,
"other" : 4
}
}
Изначально я извлекаю массив providerArray из упругого поиска, добавлял его в массив провайдеров и увеличивал число с помощью следующего запроса.
let updateProviderId = await userProviderCollection.update(
regUserId, {
$set: {
providers: combinedProviderArray,
countByType: providerCountType
}
});
где комбинированныйProviderArrayэто комбинированный массив провайдеров.ProviderId создается при создании нового отчета.Вышеуказанное условие будет работать, если отчеты уже есть.Но когда приходит новый отчет, мне нужно проверить массив провайдеров и увеличить счетчик, если не в массиве, иначе ничего не делать.Как этого добиться.
Пожалуйста, смотрите код ниже, когда отчет с providerId уже находится в массиве.
// Searching for Providers in Elastic Search
let searchForProviders = await esHelper.getProvidersById(combinedProviderArray, true);
searchForProviders.forEach((getCategory) => {
let prCategory = getCategory.category;
prCategory.forEach((cat) => {
// Combining categories
categoryArray = categoryArray.concat(cat);
});
});
let counts = {
"doctor": 0,
"laboratory": 0,
"hospital": 0,
"imagingcenter": 0,
"other": 0
};
let x;
categoryArray.forEach(function(x) {
counts[x] = (counts[x] || 0)+1;
});
let providerCountType = {
"doctors": counts.doctor,
"labs": counts.laboratory,
"hospitals": counts.hospital,
"imagingCenters": counts.imagingcenter,
"other": counts.other
}
// Updating npiId & category count
userproviderData.getDataSource().connector.connect(async (err, db) => {
let userProviderCollection = db.collection("UserProviders");
let regUserId = { userId: userId};
let updateProviderId = await userProviderCollection.update(
regUserId, {
$set: {
providers: combinedProviderArray,
countByType: providerCountType
}
});
});
Пожалуйста, предоставьте соответствующее решение для того же.Любая помощь могла бы быть полезна.Я застрял на том, как добавить провайдера в массив и увеличить счетчик в соответствии с этим.