Vous pouvez utiliser une combinaison de $objectToArray
et $arrayToObject
pour filtrer votre objet par des noms de champs dynamiques mais si vos paramètres sont connus lorsque vous construisez votre requête, il est plus facile d'utiliser régulièrement .find()
et appliquer la projection :
db.collection.find({},{ "rank.Person1": 1, "rank.Person2": 1})
let input = ['Person1', 'Person2'];
let entries = input.map(p => ([`rank.${p}`, 1]))
let projection = Object.fromEntries(entries);
console.log(projection);