Я работаю над кодом, который переносит объекты из базы данных на одном сервере в базу данных на другом сервере, и я сохраняю объект в базе данных с помощью
db.collections.users.insertOne(userObj)
Если процесспрерывается, мне нужно проверить, был ли объект уже сохранен. Я обнаружил, что в зависимости от того, как я ищу, я получаю разные результаты!
User.findById(userObj._id).exec() // null
User.findOne({_id: userObj._id}).exec() // null
User.findOne({username: userObj.username}).exec() // m8
User.findById(new mongoose.Types.ObjectId(userObj._id)).exec() // null
db.collections.users.findOne({_id: userObj._id}) // m8
db.collections.users.findOne({_id: new mongoose.Types.ObjectId(userObj._id)}) // null
db.collections.users.findOne({username: userObj.username}) // m8
Сначала я думал, что схожу с ума, но ... (см. Также мой ответ)