Я бы хотел сопоставить множество населенных пунктов:
let data = await Post.find().sort('-created')
.populate({path: 'user', select: '_id username avatar_small', match: { username: { "$regex": query, "$options": ['i', 'g'] }}})
.populate({path: 'passion', select: '_id name name_proc', match: { name: { "$regex": query, "$options": ['i', 'g'] }}})
.lean().skip(skip).limit(30).exec();
Это работает только с одним заполнением, но не со многими, и также пропускается, если заполнение не существует.