1. 程式人生 > >(二)連線資料庫使用Model物件對資料庫進行操作(CRUD)

(二)連線資料庫使用Model物件對資料庫進行操作(CRUD)

var mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
mongoose.connection.once("open",function () {
	console.log("資料庫連線成功~~~");
});

var Schema = mongoose.Schema;

var stuSchema = new Schema({

	name:String,
	age:Number,
	gender:{
		type:String,
		default:"female"
	},
	address:String

});

var StuModel = mongoose.model("student" , stuSchema);
/*
	- 有了Model,我們就可以來對資料庫進行增刪改查的操作了

 	Model.create(doc(s), [callback])
 	- 用來建立一個或多個文件並新增到資料庫中
 	- 引數:
 		doc(s) 可以是一個文件物件,也可以是一個文件物件的陣列
 		callback 當操作完成以後呼叫的回撥函式

 	查詢的:
	 Model.find(conditions, [projection], [options], [callback])
	 	- 查詢所有符合條件的文件 總會返回一個數組
	 Model.findById(id, [projection], [options], [callback])
	 	- 根據文件的id屬性查詢文件
	 Model.findOne([conditions], [projection], [options], [callback])
	 	- 查詢符合條件的第一個文件 總和返回一個具體的文件物件

 		conditions 查詢的條件
 		projection 投影 需要獲取到的欄位
 			- 兩種方式
 				{name:1,_id:0}
 				"name -_id"
 		options  查詢選項(skip limit)
 				{skip:3 , limit:1}
 		callback 回撥函式,查詢結果會通過回撥函式返回
 					回撥函式必須傳,如果不傳回調函式,壓根不會查詢

 */

/*StuModel.find({name:"唐僧"},function (err , docs) {
	if(!err){
		console.log(docs);
	}
});*/

/*StuModel.find({},{name:1 , _id:0},function (err , docs) {
	if(!err){
		console.log(docs);
	}
});*/

/*StuModel.find({},"name age -_id", {skip:3 , limit:1} , function (err , docs) {
	if(!err){
		console.log(docs);
	}
});*/

/*StuModel.findOne({} , function (err , doc) {
	if(!err){
		console.log(doc);
	}
});*/

/*StuModel.findById("59c4c3cf4e5483191467d392" , function (err , doc) {
	if(!err){
		//console.log(doc);
		//通過find()查詢的結果,返回的物件,就是Document,文件物件
		//Document物件是Model的例項
		console.log(doc instanceof StuModel);
	}
});*/



/*StuModel.create([
	{
		name:"沙和尚",
		age:38,
		gender:"male",
		address:"流沙河"
	}

],function (err) {
	if(!err){
		console.log(arguments);
	}
});*/


/*
	修改
 Model.update(conditions, doc, [options], [callback])
 Model.updateMany(conditions, doc, [options], [callback])
 Model.updateOne(conditions, doc, [options], [callback])
 	- 用來修改一個或多個文件
 	- 引數:
 		conditions 查詢條件
 		doc 修改後的物件
 		options 配置引數
 		callback 回撥函式
 Model.replaceOne(conditions, doc, [options], [callback])
* */

//修改唐僧的年齡為20
/*StuModel.updateOne({name:"唐僧"},{$set:{age:20}},function (err) {
	if(!err){
		console.log("修改成功");
	}
});*/

/*
	刪除:
 Model.remove(conditions, [callback])
 Model.deleteOne(conditions, [callback])
 Model.deleteMany(conditions, [callback])
 */
/*StuModel.remove({name:"白骨精"},function (err) {
	if(!err){
		console.log("刪除成功~~");
	}
});*/

/*
 Model.count(conditions, [callback])
 	- 統計文件的數量的
 */
StuModel.count({},function (err , count) {
	if(!err){
		console.log(count);
	}
});