整体设计
以mongoose对象为中心,建立起来的API系统,mongoose对象负责连接的建立,维持,数据结构的建立,模型的管理等工作。
连接管理
mongoose.connect("mongodb://localhost:27017/demo01")
.then(function () {
console.log("连接成功")
server.listen(port);//启动express
server.on('error', onError);
server.on('listening', onListening);
// mongoose.disconnect();
})
模型管理
const mongoose=require('mongoose')
//数据结构的建立
mongoose.model("userSchema",{uname:String,age:Number});
//模型的管理
let User=mongoose.model("userSchema");
Model扮演了重要的角色
从mongoose对象中获取的Model扮演了数据管理者的角色
建立Collection及插入Document
var Tank = mongoose.model('Tank', yourSchema);
var small = new Tank({ size: 'small' });
small.save(function (err) {
if (err) return handleError(err);
// saved!
});
// or
Tank.create({ size: 'small' }, function (err, small) {
if (err) return handleError(err);
// saved!
});
// or, for inserting large batches of documents
Tank.insertMany([{ size: 'small' }], function(err) {
});
查询
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
删除
Tank.deleteOne({ size: 'large' }, function (err) {
if (err) return handleError(err);
// deleted at most one tank document
});
更新
Tank.updateOne({ size: 'large' }, { name: 'T-90' }, function(err, res) {
// Updated at most one doc, `res.modifiedCount` contains the number
// of docs that MongoDB updated
});
测试用mongo数据
基础测试
db.users.drop();
db.users.insert({uname:'john',age:100,sex:true});
db.users.insert({uname:'johnson',age:67,sex:true});
db.users.insert({uname:'tom',age:98,sex:false});
db.users.insert({uname:'john',age:12,sex:true});
db.users.insert({uname:'alice',age:76,sex:false});
db.users.insert({uname:'mike',age:9,sex:true});
db.users.insert({uname:'cindy',age:30,sex:false,major:'SE'});
db.users.insert({uname:'danny',age:30,sex:true,major:null});
猴子与水果
db.monkey.insert({_id:1,name:'m1',fruit:['apple','bana','peach']});
db.monkey.insert({_id:2,name:'m2',fruit:['bana','peach','apple']});
db.monkey.insert({_id:3,name:'m3',fruit:['apple','peach']});
db.monkey.insert({_id:4,name:'m4',fruit:['kumquat','bana','peach']});
db.monkey.insert({_id:5,name:'m5',fruit:[]});
贴子评论
db.posts.insert({_id:1,title:'t1',date:new Date(1999,10,2),author:'john',content:'c1',comments:[{author:'li',comment:'cc1',score:3},{author:'bu',comment:'cc2',score:5}]});
db.posts.insert({_id:2,title:'t2',date:new Date(1998,09,12),author:'tom',content:'c2',comments:[{author:'bai',comment:'cc2',score:5},{author:'li',comment:'zhan',score:5}]});
db.posts.insert({_id:3,title:'xx1',date:new Date(2001,9,18),author:'mike',content:'ttx',comments:[{author:'john',comment:'cc5',score:5}]});
db.posts.insert({_id:4,title:'ww2',date:new Date(2102,10,9),author:'li',content:'nw',comments:[]});