Khi bạn gọi bots.findOne({data})
nó trả về "Lời hứa", không phải dữ liệu. Bạn cần đợi giải quyết Promise để lấy dữ liệu. Bạn có thể thử mã này.
socket.on("bot_req_id", async function(data) {
let db = mongoose.db("wumpusCave")
let bots = db.collection("bots")
console.log(data)
let bot = await bots.findOne({data})
console.log(bot);
socket.emit("bot_res_id", bot)
})
Bài viết này có thể giúp bạn hiểu khái niệm: https://scotch.io/courses/10-need-to-know-javascript-concept/callbacks-promises-and-async