Bạn có thể sử dụng kết hợp $ objectToArray
và $ arrayToObject
để lọc đối tượng của bạn theo tên trường động nhưng nếu các tham số của bạn được biết khi bạn đang tạo truy vấn thì sẽ dễ dàng hơn khi sử dụng thông thường .find()
và áp dụng phép chiếu:
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);