Ao verificar como estava se comportando a busca por autor, me fiz a seguinte pergunta, como pesquisar os livros de autores que contenham um determinado sobrenome. Cheguei a conclusão que deve mudar a busca do autor para find() e deve ser passado para a busca um array com os id dos autores encontrados (obs: demorei para descobrir que é só passar um array ao invés de algo como busca.autor.$in).
Resultado da alteração:
if(nomeAutor) {
const listaAutores = await autores.find({ nome: {$regex: nomeAutor, $options: "i" } });
if (listaAutores !== null) {
busca.autor = listaAutores.map( (obj) => obj._id.toString());
} else {
busca = null;
}
}
O resultado esperado quando passado na URL http://localhost:3000/livros/busca?titulo=end&nomeAutor=Barbosa, são todos os livros que contenham no titulo a palavra "end" e autor que tenha no nome a palavra "Barbosa".