前置工作:
開始啦
新建一個本地空項目
npm init
npm install mongoose --save
新建一個文件
// app.js
// 第一步、鏈接mongo
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', mongoOpen);
// 第二部、成功回調裏面進行操作
async function mongoOpen() {
// we're connected!
console.log('mongo open success');
// 定義一個Schema,對應到mongo數據庫的collection,類似於定義一個表
// 當前Schema只有一個屬性--name
var kittySchema = mongoose.Schema({
name: String
});
kittySchema.methods.speak = function () {
var greeting = this.name
? "Meow name is " + this.name
: "I don't have a name";
console.log(greeting);
}
var Kitten = mongoose.model('Kitten', kittySchema);
// 新建數據
var felyne = new Kitten({ name: 'Felyne' });
// 就算添加其他屬性,能夠成功執行,但是不會保存上
var fluffy = new Kitten({ name: 'fluffy' });
var empty = new Kitten();
// 添加
await fluffy.save().then((v) => v.speak()); // 是個異步函數
await empty.save();
empty.speak();
const saveRes = await felyne.save();
felyne.speak();
console.log('saveRes', saveRes);
// => saveRes { _id: 5f02e434c4946e1642054c17, name: 'Felyne', __v: 0 }
// 查詢
const list = await Kitten.find({ name: /^[fF]/})
console.log('find res', list);
console.log('find all res', await Kitten.find({}));
// 修改
const updateRes = await Kitten.updateMany(
{ name: undefined },
{ name: 'fff' }
);
console.log('updateRes', updateRes);
// => updateRes { n: 1, nModified: 1, ok: 1 }
console.log('update find res', await Kitten.find({}));
// 刪除
const deleteRes = await Kitten.deleteMany({ name: /^[fF]/});
console.log('deleteRes', deleteRes);
// => deleteRes { n: 3, ok: 1, deletedCount: 3 }
console.log('delete find res', await Kitten.find({}));
}
運行
node app.js
輸出
mongo open success
Meow name is fluffy
I don't have a name
Meow name is Felyne
find res [
{ _id: 5f02e30820b51d14acdfec20, name: 'fluffy', __v: 0 },
{ _id: 5f02e30820b51d14acdfec1f, name: 'Felyne', __v: 0 }
]
find all res [
{ _id: 5f02e30820b51d14acdfec20, name: 'fluffy', __v: 0 },
{ _id: 5f02e30820b51d14acdfec21, __v: 0 },
{ _id: 5f02e30820b51d14acdfec1f, name: 'Felyne', __v: 0 }
]
updateRes { n: 1, nModified: 1, ok: 1 }
update find res [
{ _id: 5f02e30820b51d14acdfec20, name: 'fluffy', __v: 0 },
{ _id: 5f02e30820b51d14acdfec21, __v: 0, name: 'fff' },
{ _id: 5f02e30820b51d14acdfec1f, name: 'Felyne', __v: 0 }
]
deleteRes { n: 3, ok: 1, deletedCount: 3 }
delete find res []