mongoose or mongo node.js driver? [duplicate] - node.js

I just want to know, what are differences of mongoose and mongoJS. And, what the advantage and the lack if we use mongoose or mongoJS ?
Because we know that are many depedency that use to connecting NodeJS and MongoDB. For example mongoose and mongoJS.

Mongoose is higher level interface to Mongodb and actually uses mongodb.js, the MongoDB driver. The question is not really which one is better or worse, the question for us is
> Do the benefits of an ODM in Mongoose outweigh the drawbacks?
If you’re looking for an object modeling (ODM) tool so that you do not have to learn a lot about the way Mongodb works, then Mongoose is probably for you. If you want a fast driver and really get the most out of Mongodb, then use the native driver. We know our way around Mongodb so Mongoose would have slowed use down and our app.

If you are attempting to connect to a MongoDB database instance, then you will need some sort of driver. I have never heard of a MongoJS, but maybe you are referring to the MongoDB driver? This driver will help you communicate with the database, such as saving documents or retrieving them.
MongooseJS is an object modeling library. It sits on top of the MongoDB driver and manages relationships and object mapping. It can detect changed properties in objects, and then run validation and update operations.
You don't need to explicitly install both, as Mongoose will include the MongoDB driver when installing through NPM. You don't need either if you are not connecting to a MongoDB database.
Better you prefer mongoose since it comes with both libraries which may used to invoke instances and drivers for mongoDB connection .

mongoose is ORM - Object-relational mapping. It adds an abstract layer with many methods to manipulate data. Such as chaining like this:
Tank
.find({ size: 'small' })
.where('createdDate')
.gt(oneYearAgo)
.exec(callback);
It may be good for newbies because it's easy to use, with clear syntax. But it may be slower than native approach.
MongoJS is just a wrapper of node-mongodb-native, with some improvements. What is native? It's a driver that allows to directly call to MongoDB from Node.js program. While native version by MongoDB is the best choice for performance, it follows origin syntax same as Mongo Shell, that's quite complicate for newcomers.
Personally, I used Mongoose at first. Now I like to use node-mongodb-native, but have to add some methods to make it easier. Anyway, MongoJS is a balance solution.

Related

Best way to interact with mongodb from express apps

After tinkering a bit i found that a lot of mongoose tutorials is a bit outdated, and nowadays mongoose have some different syntax and requirements.
So what is the best and modern way to interact with mongodb, is it mongoose or the mongodb module from npm, or something another that i am not aware about.
And does it still worth to learn mongoose ? if yes any body have some good resources ?
for me am using the direct client to mongodb without mongoose
mongoose has some performance issues
Performance article
mongodb driver Mongo Driver

What are difference of mongoose and mongoJS ? Which should I use?

I just want to know, what are differences of mongoose and mongoJS. And, what the advantage and the lack if we use mongoose or mongoJS ?
Because we know that are many depedency that use to connecting NodeJS and MongoDB. For example mongoose and mongoJS.
Mongoose is higher level interface to Mongodb and actually uses mongodb.js, the MongoDB driver. The question is not really which one is better or worse, the question for us is
> Do the benefits of an ODM in Mongoose outweigh the drawbacks?
If you’re looking for an object modeling (ODM) tool so that you do not have to learn a lot about the way Mongodb works, then Mongoose is probably for you. If you want a fast driver and really get the most out of Mongodb, then use the native driver. We know our way around Mongodb so Mongoose would have slowed use down and our app.
If you are attempting to connect to a MongoDB database instance, then you will need some sort of driver. I have never heard of a MongoJS, but maybe you are referring to the MongoDB driver? This driver will help you communicate with the database, such as saving documents or retrieving them.
MongooseJS is an object modeling library. It sits on top of the MongoDB driver and manages relationships and object mapping. It can detect changed properties in objects, and then run validation and update operations.
You don't need to explicitly install both, as Mongoose will include the MongoDB driver when installing through NPM. You don't need either if you are not connecting to a MongoDB database.
Better you prefer mongoose since it comes with both libraries which may used to invoke instances and drivers for mongoDB connection .
mongoose is ORM - Object-relational mapping. It adds an abstract layer with many methods to manipulate data. Such as chaining like this:
Tank
.find({ size: 'small' })
.where('createdDate')
.gt(oneYearAgo)
.exec(callback);
It may be good for newbies because it's easy to use, with clear syntax. But it may be slower than native approach.
MongoJS is just a wrapper of node-mongodb-native, with some improvements. What is native? It's a driver that allows to directly call to MongoDB from Node.js program. While native version by MongoDB is the best choice for performance, it follows origin syntax same as Mongo Shell, that's quite complicate for newcomers.
Personally, I used Mongoose at first. Now I like to use node-mongodb-native, but have to add some methods to make it easier. Anyway, MongoJS is a balance solution.

How to build models (ODM) in nodejs to use with nedb

I am looking for a ODM module that can be used with Nedb in NodeJs-Express. Is it somehow possible to use Mongoose or Waterline schemas in combination with nedb for validation? Mongoose and Waterline do not provide an official adapter for nedb.
At the moment have very low requirements for performance and i am working on a project for the raspberry pi therefore i would like to stick with nedb (or similar file-based nosql database).
Camo is an ODM for nedb and MongoDB, on Node.js.
I haven't been able to try it, but there is an adapter for Nedb for waterline that looks like it is dependent from building a Sails application.
It's available at: https://github.com/adityamukho/sails-nedb
EDIT: Sorry, I was incorrect, I was assuming this would work without sails, but I think this blog from the creator might prove that wrong

Why we use ORM or ODM to manage any graphDB?

Hey everyone I am working on nodeJS app. I searched some modules to manage my database (orientdb).
My question is: Why we use any ORM or ODM (or why is it recommenced), because there is a module which can provide many functions to manage DB.
I am still confused what should I use orientorm (https://github.com/mav-im/orientorm) or oriento (https://github.com/codemix/oriento)
Thank in advance..
Depending on the goal and depending on the ORM, ORMs have the advantage of adding support for:
schemas / models / collections: this makes it easier to create all classes/properties and, in some cases, migrations;
validations: make it easier to verify what gets saved in the DB.
All OrientDB ORM's I've seen for node.js expose Oriento, so that makes it easy to access the underlying oriento methods for doing more complex stuff.
Having said all this I recommend you try the waterline ORM with waterline-orientdb adapter. Waterline is an adapter based ORM with support for multiple databases (including support for associations between databases). Waterline-orientdb is the adapter for OrientDB which is based on Oriento. If at any point you need to use Oriento you can call .getDB() to access Oriento's instance.
Oriento is much more mature and supported. I suggest you to go with it.

CRUD operations with Node.js and MongoDB

What is the optimal way to perform CRUD operations when using Node.js with MongoDB. Can I reuse the same queries that work on mongo shell? What advantages does a ODM like mongoose provide? Any other ODMs which fit into the mean.io stack?
vmr.
Well, I guess it depends of what you want to do.
Lets take what Mongoose says in their website:
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.
Resuming what I understood of that it helps you to model your database and helps you to mantain your logic organized using model like in an MVC. It's a very mature ODM and very recomended for using with MVC.
In my personal experience I started using Monk, which did the trick for a while, but the I started to need to use aggregate and other stuff that apparently Monk can't handle. And I don't wanted to tie my system to an model because is a very mutable project, so I started using Mongoskin which is, at least for now, perfect for me because I can use pratically the same query that I use at Robomongo (Which is like a Navicat, PgAdmin, PhpMyAdmin but for MongoDB) in my ExpressJs code.
Mongoose is saving your time by mapping the JavaScript Data objects to the MongoDB database.
MongoDB and NodeJS Integration

Resources