Je prévois de migrer mongodb vers documentdb d'aws. Selon la documentation de DocDB, les requêtes $let ne sont pas prises en charge nativement. Je recherche donc des options sur la façon dont je peux refactoriser les éléments suivants:
let params.status = ["Pending", "Scheduled", "Completed"];
const searchedValues = params.status.map(val => ({ $eq: [ '$$current_status.value', val ] }));
query.$expr = {
$let: {
vars: {
current_status: {
$arrayElemAt: [
'$status_history',
-1
]
}
},
in: {
$or: searchedValues
}
}
};
Deuxième requête :
const searchedValues = params.status.map(val => ({ $eq: [ '$$current_status.value', val ] }));
query.$expr = {
$let: {
vars: {
current_status: {
$arrayElemAt: [
'$status_history',
-1
]
}
},
in: {
$or: searchedValues
}
}
};
status_history
est un tableau.
Je n'ai pas suffisamment travaillé avec mongodb pour pouvoir refactoriser cela. Toute aide serait appréciée.
Solution du problème
La solution de contournement que je vois consiste à affecter la variable current_status dans le code, à la suite de la requête { $arrayElemAt: [ '$status_history', -1 ]}, puis effectuez la requête $or. Oui, ce sera 2 requêtes au lieu d'une, mais cela peut être un compromis raisonnable.
Aucun commentaire:
Enregistrer un commentaire