Según nuestra discusión, encontramos la causa raíz por
db.locations.update({ name: 'Starcups' },
{ $push: {
reviews: {
author: 'Simon Holmes',
id: ObjectId(), // issue is here
rating: 5, ... } } })
id: ObjectId() creará id campo en el subdocumento y sin _id campo en las reviews subdocumento.
id()
El método se usa para documentArrays tener un id especial método para buscar un documento por su _id . Como no hay _id campo en reviews matriz de documentos, no funciona bien.
Elimina id: ObjectId() de su código.