Mongoid vs Mongoose: What are the differences?
Mongoid: Ruby ODM framework for MongoDB. The philosophy of Mongoid is to provide a familiar API to Ruby developers who have been using Active Record or Data Mapper, while leveraging the power of MongoDB's schemaless and performant document-based design, dynamic queries, and atomic modifier operations; Mongoose: MongoDB object modeling designed to work in an asynchronous environment. Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose. Mongoose provides a straight-forward, schema-based solution to modeling your application data and includes built-in type casting, validation, query building, business logic hooks and more, out of the box.
Mongoid and Mongoose can be primarily classified as "Object Document Mapper (ODM)" tools.
Mongoid and Mongoose are both open source tools. Mongoose with 18.8K GitHub stars and 2.62K forks on GitHub appears to be more popular than Mongoid with 21 GitHub stars and 14 GitHub forks.
According to the StackShare community, Mongoose has a broader approval, being mentioned in 85 company stacks & 88 developers stacks; compared to Mongoid, which is listed in 7 company stacks and 7 developer stacks.
What is Mongoid?
What is Mongoose?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
What are the cons of using Mongoid?
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
I inherited a stack where Mongoose is used in the database layer.
It's been several months and it's still the single highest source of daily WT*s in my backend development. The API is full of irregularities and the design is a poor mix of object-orientation and stateful objects with a lot implicit behavior. Mongoose made the choices of taking the worst parts of ORMs and using them in a context where the benefits of ORMs don't apply. The only reason I'm keeping it is its handy
.populate() feature. Expect bad surprises!