Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

120 lines (118 sloc) 5.358 kB
doctype html
html(lang='en')
head
meta(charset="utf-8")
meta(name="viewport", content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")
title Mongoose Quick Start v#{package.version}
link(href='http://fonts.googleapis.com/css?family=Anonymous+Pro:400,700|Droid+Sans+Mono|Open+Sans:400,700|Linden+Hill|Quattrocento:400,700|News+Cycle:400,700|Antic+Slab|Cabin+Condensed:400,700', rel='stylesheet', type='text/css')
link(href='/docs/css/default.css', rel='stylesheet', type='text/css')
link(href='/docs/css/guide.css', rel='stylesheet', type='text/css')
style.
body.api
a#forkbanner(href="http://github.com/learnboost/mongoose")
img(style="position: absolute; top: 0; right: 0; border: 0;", src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png", alt="Fork me on GitHub")
#links
#header
h1
a(href="../index.html")
.mongoose Mongoose
include includes/nav
#content
.module
h2 Getting Started
p
em
| First be sure you have
a(href="http://www.mongodb.org/downloads") MongoDB
| and
a(href="http://nodejs.org/") Nodejs
| installed.
p
| Now say we like fuzzy kittens and want to record every kitten we ever meet in MongoDB.
| The first thing we need to do is include mongoose in our project and open a connection.
:js
var mongoose = require('mongoose')
, db = mongoose.createConnection('localhost', 'test');
p We have a pending connection object to the test database running on localhost. We now need to get notified if we connect successfully or if a connection error occurs:
:js
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
// yay!
});
p Once our connection opens, our callback will be called. For brevity, let's assume that all following code is within this callback.
p
| With Mongoose, everything is derived from a
a(href="./api.html#schema_Schema") Schema
| . Let's get a reference to it and define our kittens.
:js
var kittySchema = new mongoose.Schema({
name: String
})
p
| So far so good. We've got a schema with one property,
code name
| , which will be a
code String
| . The next step is compiling our schema into a
a(href="./api.html#model_Model") model
| .
:js
var Kitten = db.model('Kitten', kittySchema)
p
| A model is a class with which we construct documents.
| In this case, each document will be a kitten with properties and behaviors as declared in our schema.
| Let's create a kitten document representing the little guy we just met on the sidewalk outside:
:js
var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'
p Kittens can meow, so let's take a look at how to add "speak" functionality to our documents:
:js
kittySchema.methods.speak = function () {
var greeting = this.name
? 'Meow name is ' + this.name
: 'I don\'t have a name'
console.log(greeting);
}
var Kitten = db.model('Kitten', kittySchema)
p
| Functions added to the
code methods
| property of a schema get compiled into the Model prototype and exposed on each document instance:
:js
var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"
p
| We have talking kittens! But we still haven't saved anything to MongoDB.
| Each document can be saved to the database by calling its
code save
| method. The first argument to the callback will be an error if any occured.
:js
fluffy.save(function (err) {
if (err) // TODO handle the error
console.log('meow')
});
p
| Say time goes by and we want to display all the kittens we've seen.
| We can access all of the kitten documents through our Kitten model.
:js
Kitten.find(function (err, kittens) {
if (err) // TODO handle err
console.log(kittens)
})
p
| We just logged all of the kittens in our db to the console.
| If we want to filter our kittens by name, Mongoose supports MongoDbs rich querying syntax.
:js
Kitten.find({ name: /fluff/i }, callback)
p
| This performs a case-insensitive search for all documents with a name property containing "fluff" and returns the results to the callback.
h3 Congratulations
p
| That's the end of our quick start. We created a schema, added a custom document method, saved and queried kittens in MongoDB using Mongoose. Head over to the
a(href="guide.html") guide
| , or
a(href="api.html") api docs
| for more.
script.
document.body.className = 'load';
include includes/googleanalytics
Jump to Line
Something went wrong with that request. Please try again.