mongoose學習筆記
阿新 • • 發佈:2018-05-02
any bind wan gte delete mis 創建model remove 插入
一、為什麽使用mongoose
1、避開連接mongo經常要 db.open()和db.close(),數據庫操作頻繁就會出現
Error: db object already connecting, open cannot be called multiple times
用mongoose就不會出現這錯誤勒,因為一旦連接好數據庫,db就會處於open狀態,不存在訪問時要打開,然後又要關閉的規則
2、Mongoose庫簡而言之就是在node環境中操作MongoDB數據庫的一種便捷的封裝,一種對象模型工具,類似於ORM工具
二、mongoose的使用
1、mongoose連接
const mongoose = require(‘mongoose‘); var db=mongoose.createConnection(‘mongodb://39.104.166.99:27017/runoob‘); db.on(‘error‘, console.error.bind(console, ‘connection error:‘)); db.once(‘open‘, function () { console.log(‘mongo is open‘) // we‘re connected! });
2、創建集合
var Schema = mongoose.Schema;var userObj = new Schema({ name: { type: String, index: { unique: true } }, nick: String, password: String, email: String, submit: Number, solved: Number, regTime: String, privilege: String }); //註冊靜態方法 findByName userObj.static(‘findByName‘, function (name, callback) {return this.find({ name: name }, callback); }) // 創建users集合 var users = db.model(‘users‘, userObj);
3、插入數據
var user = { name: ‘zhouba‘, nick: ‘周八‘, password: ‘123456‘, email: ‘[email protected]‘, submit: 1, solved: 1, regTime: ‘String‘, privilege: ‘String‘ } //創建用戶 var createUser = new users(user); createUser.save((err, doc) => { if (err) console.log(‘err:‘ + err); console.log(doc); }) // or users.create(user, (err, doc) => { if (err) console.log(‘err:‘ + err); console.log(doc); })
4、修改數據
//修改 users.update({ name: ‘zhouba‘ }, { submit: 2 }, (err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); }) //批量修改 { multi: true } users.update({ name: ‘zhouba‘ }, { nick: ‘粥吧‘ }, { multi: true },(err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); })
5、刪除數據
//刪除刪除所有符合條件的文檔 users.remove({ submit: 1 }, (err, rlt) => { if (err) console.log(‘err:‘ + err); console.log(rlt); //{ ok: 1, n: 1 } }) //最多刪除一個文件符合條件的文檔 users.deleteOne({ name: ‘Eddard Stark‘ }, function (err) { }); //最多刪除所有符合條件的文檔,表現的像remove users.deleteMany({ name: /Stark/, submit: { $gte: 18 } }, function (err) { });
6、查找數據
//查找 users.find({ name: ‘zhouba‘ }, (err, docs) => { if (err) console.log(‘err:‘ + err); console.log(docs); }) //where 條件 .where(‘age‘).gte(21).lte(65).where(‘name‘, /^b/i) users.where(‘submit‘).gte(2).exec((err, docs)=> { if (err) console.log(‘err:‘ + err); console.log(‘docs:‘ + docs); })
7、其他
//Query var query = users.find(); //查詢 query.exec(function (err, docs) { if (err) console.log(‘err:‘ + err); console.log(docs); }) //or use promise var promise = query.exec(); promise.then(function (resolve, reject) { if (reject) console.log(‘err:‘ + reject); console.log(resolve); }) //findById mongoose自帶 users.findById(‘5ae45b6258d8122414f5498b‘, function (err, docs) { if (err) console.log(‘err:‘ + err); console.log(docs); }) //此方法為創建model時註冊的靜態方法 users.findByName(‘wangwu‘, (err, docs) => { if (err) console.log(‘err:‘ + err); console.log(docs); })
更過mongoose API: http://mongoosejs.com/docs/api.html
mongoose學習筆記