Вие не търсите ObjectId, независимо колко си мислите, че сте. Вие правите заявка за ObjectId, кодиран като шестнадесетичен низ, който не е едно и също нещо. Правилно типизирайте и вероятно ще имате много по-голям успех.
Редактирано за уточняване, от mongo (JS) REPL обвивка:
> // Omitting the _id, or generating a new one, are equivalent during insert.
> db.foo.insert({_id: ObjectId()})
WriteResult({ "nInserted" : 1 })
> db.foo.find() // As expected, we get back our _real_ ObjectId value.
{ "_id" : ObjectId("5c9cfab873724727778c0730") }
> // Can we "insert the record again" using a string version of the ID?
> db.foo.insert({_id: "5c9cfab873724727778c0730"})
WriteResult({ "nInserted" : 1 }) // Sure as heck can! No unique violation!
> db.foo.find() // Because THESE ARE NOT THE SAME
{ "_id" : ObjectId("5c9cfab873724727778c0730") }
{ "_id" : "5c9cfab873724727778c0730" }
След нашата IRC дискусия изглежда има трудности при разбирането на „търсените термини“ в отговорите, които получавате. Потърсете тук в StackOverflow (или Google, или DDG) за „mongoose typecast ObjectId“ (без кавички; или просто „mongoose ObjectId“…) и ще намерите много отговори, тъй като това е особено често срещан проблем за потребителите на Mongoose.