最近在學習node,因此據說node和mongodb更配哦。。因此我就來學習mongodb了node
which mongod
mysql
指定path 和log日誌 mongod --dbpath /data2/db --port=27017 --fork /data2/db/log/mongod.log
sql
mongod --shutdown
mongodb
mongod 115.29.137.34:27017
數據庫
(不存在的數據庫也可使用,插入數據以後會自動保存) use mydb
npm
db.auth('username','password')
api
show dbs
服務器
(相似於mysql的表) db.users.insert({'name':'xiaomo'})
db.users.insert({'name':'xiaoming','age':25})
db.users.insert({'name':'xiaoming','age':24,'sex':'女'})
koa
(前提是use了一個數據庫)
有一個System.indexes 是索引show collections
mongoose
db.users.find()
(參數是一個對象) db.users.find({'name':'xiaomo'})
(有三個參數,1:查詢條件,2:更新的內容 3:更新的配置) db.users.update({'name':'xiaomo',{$set:{'name:'xm}})
修改知足條件的第一條數據 db.users.update({'name':'xiaomo',{$set:{'name:'xm}},{multi:true})
修改全部知足條件的數據
(只有一個參數,必需要傳id,後面是要修改的數據) db.users.save({'id':'objectId(574710a97a3afd63cde56a49)','age':30})
(1:條件 2 是否刪除全部符合條件的) db.users.remove({'name':'xiaomoing'},true)
db.users.drop()
鏈接mongdodb的驅動
npm install --save mongoose
var mongoose = require('mongoose'); <!-- var uri = 'mongodb://username:password@hostname:port/databasename'; --> var uri = 'mongodb://xiaomo:xiaomo@115.29.137.34:27017/admin'; mongoose.connect(uri);
// model.js var Schema = mongoose.Schema, ObjectId = Schema.ObjectId; var BlogPost = new Schema({ author : ObjectId, title : String, body : String, date : Date }); //Model mongoose.model('blog',Schema); var Comment = new Schema({ name: { type: String, default: 'hahaha' }, age: { type: Number, min: 18, index: true }, bio: { type: String, match: /[a-z]/ }, date: { type: Date, default: Date.now } }); // a setter Comment.path('name').set(function (v) { return capitalize(v); }); // middleware Comment.pre('save', function (next) { notify(this.get('email')); next(); });
//insert.js var mongoose = require('mongoose'); require('./model.js'); //執行 var Blog = mongoose.model('blog'); var blog = new Blog({ name:'xiaomo', age:25, bio:'don't know', date:new Date }); book.save(function(err){ console.log('save status:'+err); });
var mongoose = require('mongoose'); require('./model.js'); var Blog = mongoose.model('blog'); Blog.findOne({'name':'xiaomo'},function(err,doc){ if(err){ console.log(err) return; } if(doc){ doc.reomove(); } })
var mongoose = require('mongoose'); require('./model.js'); var Blog = mongoose.model('blog'); Blog.find({},function(err,doc){ if(err){ console.log(err) return; } console.log('result',doc) })
第一個知足條件的結果
var mongoose = require('mongoose'); require('./model.js'); var Blog = mongoose.model('blog'); Blog.findOne({'name':'xiaomo'},function(err,doc){ if(err){ console.log(err) return; } console.log('result',doc) })
// condation.js var mongoose = require('mongoose'); require('./model.js'); var Blog = mongoose.model('blog'); //名字是xiaomo或者xiaoming 能夠用$or和$and var condation = { $or $and:[ {'name':'xiaomo'}, {'name':'xiaoming'} ] } Blog.find(condation,function(err,doc){ if(err){ console.log(err) return; } console.log('result',doc) })
koa koatest -e koatest
cd koatest && npm install
npm install --save mongoose
// models/users.server.model.js var mongoose = require('mongoose'); var UserSchema = new mongoose.Schema({ uid:Number, username:String, createTime:Date, lastLogin:Date }) module.exports = mongoose.model('User',UserSchema);
// config/config.js module.exports={ mongodb:'mongodb://xiaomo:xiaomo@115.29.137.34:27017/admin' } //config/mongoose.js var mongoose = require('mongoose'); var config = require('./config.js'); module.exports=function(){ var db = mongoose.connect(config.mongodb); require('./../models/users.server.model.js'); return db; }
//routers/users.js var router = require('koa-router')(); var mongoose = require('mongoose'); var User = mongoose.model('User'); router.get('/', function *(next) { //add var user = new User({ uid: }) this.body = yield User.find({}); }); module.exports = router;