// npm install mongoose                                                                         
// mongod --nojournal --noprealloc --dbpath path_to_db                                          
// node model.js                                                                                
                                                                                                
var async = require('async');                                                                   
var mongoose = require('mongoose');                                                             

var db = mongoose.connect('mongodb://localhost/dbname');                                        
                                                                                                
var Schema = mongoose.Schema;                                                                   
                                                                                                
var Word = new Schema({                                                                         
   text       : String                                                                          
  ,reading    : String                                                                          
  ,createdAt  : {type: Date, default: Date.now}                                                 
});                                                                                             
                                                                                                
var WordModel = mongoose.model("Word",Word);                                                    
                                                                                                
var hoge = new WordModel({text:"hoge", reading:"ほげ"});                                        
var huga = new WordModel({text:"huga", reading:"ふが"});                                        
                                                                                                
var saveModel = function(model, fn) {                                                           
  model.save(fn);                                                                               
}                                                                                               
                                                                                                
var findHoge = function(fn) {                                                                   
  WordModel.find({text:"hoge"},fn);                                                             
}                                                                                               
                                                                                                
async.series(                                                                                   
  [                                                                                             
    function(callback) {                                                                        
      findHoge(callback);                                                                       
    },                                                                                          
    function(callback) {                                                                        
      saveModel(hoge, callback);                                                                
    },                                                                                          
    function(callback) {                                                                        
      saveModel(huga, callback);                                                                
    },                                                                                          
    function(callback) {                                                                        
      findHoge(callback);                                                                       
    }                                                                                           
  ],                                                                                            
  function(err, results){                                                                       
    if(err){                                                                                    
      console.log("error => " + err)                                                            
    }else{                                                                                      
      console.log("The first search results.");                                                 
      console.log(results[0].length + "s results.")                                             
      console.log(results[0]);                                                                  
      console.log();                                                                            
      console.log("insert => " + results[1]);                                                   
      console.log("insert => " + results[2]);                                                   
      console.log();                                                                            
      console.log("Results after insertion.");                                                  
      console.log(results[3].length + "s results.")                                             
      console.log(results[3]);                                                                  
                                                                                                
    }                                                                                           
    mongoose.disconnect();                                                                      
  }                                                                                             
);