Mongoose virtual properties apparently cannot use hyphens in their names, so I believe it might be related to the problem you identified. I do not see this documented in https://mongoosejs.com/docs/tutorials/virtuals.html, but just tested it by changing a virtual property name to have a hyphen and made the same change on the template. It returns NaN. Remove the hyphen on the model's virtual property name and template, and it works again.