Можете да използвате комбинация от $objectToArray
и $arrayToObject
за да филтрирате вашия обект по имена на динамични полета, но ако вашите параметри са известни, когато изграждате заявката си, тогава е по-лесно да използвате обикновен .find()
и приложете проекция:
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);