四、語法
1.向集合中插入20000個條數(shù)據(jù)
# 方法一: 耗時:7.2s 效率太差
for(var i=1; i<20000; i++){
db.collection.insert({num:i});
}
# 方法二: 耗時0.4s 效率很好
var arr = [];
for(var i=1; i<20000; i++){
arr.push({num:i});
}
db.collection.insert(arr);
2.查詢collection中num大于500的所有數(shù)據(jù)
db.collection.find({num:{$gt:500}});
3.查詢collection中num大于40,小于50的所有數(shù)據(jù)
db.collection.find({num:{$gt:40,$lt:50}});
# 注意:開發(fā)中絕對不能使用無條件地查詢
4.查詢collection中前10條數(shù)據(jù)
db.collection.find().limit(10);
# limit()限制獲取數(shù)據(jù)數(shù)量的上限
5.查詢collection中第11到20條數(shù)據(jù)
db.collection.find().skip(10).limit(10);
# skip()跳過指定數(shù)量的數(shù)據(jù)
# 注意:skip()與limit()位置可以顛倒,MongoDB會自動調(diào)整它們的順序
6.查詢工資(sal)小于1000或大于2500的員工
db.collection.find({$or:[{sal:{$lt:1000}},{sal:{$gt:2500}}]})
7.所有工資低于1000的員工加400元的工資
db.collection.updateMany({sal:{$lt:1000}},{$inc:{sal:400}})
8.查詢文檔時,讓查詢結(jié)果按sal進行排序
注: 默認情況根據(jù)_id進行排序
db.collection.find({}).sort({sal:1}) #1 代表升序, -1代表降序
# 注意:如果對象中有兩個字段,那么先根據(jù)第一個字段進行排序裤唠。
# 如果遇到第一個字段相同的數(shù)據(jù),再對這些數(shù)據(jù)進行第二個字段的排序
五鹃操、知識點
1.文檔之間的關(guān)系:
- 一對一 (one to one) 夫妻
- 一對多/多對一 (one to many)/(many to one) 父母-孩子
- 多對多 (many to many)
六甘磨、mongoose
1.Node.js中使用mongoose
1.下載安裝mongoose
npm install --save mongoose
2.在項目中引入mongoose
var mongoose = require("mongoose");
3.連接MongoDB
mongoose.connect("mongodb://數(shù)據(jù)庫的ip地址:端口號/數(shù)據(jù)庫名",{useNewUrlParser:true})
注意:如果端口號是默認端口號(27017),則可以省略端口號
— 監(jiān)聽MongoDB數(shù)據(jù)庫的連接狀態(tài)
— 在mongoose對象中,有一個屬性叫做connection,該對象表示的就是數(shù)據(jù)庫連接
通過監(jiān)視該對象的狀態(tài),可以來監(jiān)聽數(shù)據(jù)庫的連接與斷開
4.斷開MongoDB數(shù)據(jù)庫連接
注: 一般不需要調(diào)用
注: MongoDB數(shù)據(jù)庫,一般情況下,只連接一次,連接一次以后,除非項目停止服務(wù)器關(guān)閉,否則連接一般不會斷開
mongoose.disconnect()
// 數(shù)據(jù)庫連接成功的事件
mongoose.connection.once("open",function())
// 數(shù)據(jù)庫斷開的事件
mongoose.connection.once("close",function())
2.mongoose之Model
設(shè):
var StuModel = mongoose.model("student",stuSchema);
注意:
1.中括號表示可選,沒有括號表示必填
2.Model和數(shù)據(jù)庫中的集合一一對應(yīng)
Model.find([conditions],[projection],[options],[callback])
// conditions: 查詢條件
// projection: 投影,需要獲取到的字段
// options: 查詢選項(skip limit) //第三個參數(shù){skip:3,limit:1}
// callback: 回調(diào)函數(shù)
-
1.StuModel.find({},{name:1,_id:0 },function(err,docs){});
返回的是一個數(shù)組.docs為查詢返回的數(shù)據(jù) -
2.StuModel.find({},"name -_id",function(err,docs){});
效果與1相同 -
3.StuModel.findById("id",function(err){})
返回的是一個對象 - 4.StuModel.update(conditions,doc, [options], [callback])
- 5.StuModel.updateMany(conditions,doc, [options], [callback])
- 6.StuModel.updateOne(conditions,doc, [options], [callback])
- 7.StuModel.remove(conditions, [callback])
- 8.StuModel.deleteOne(conditions, [callback])
- 9.StuModel.deleteMany(conditions, [callback])
- 10.StuModel.count(): 統(tǒng)計文檔的數(shù)量
3.mongoose之Document
注意:Document和集合中的文檔一一對應(yīng),是Model的一個實例
1.創(chuàng)建一個Document對象(Model實例)
var stu = new StuModel({
name: "孫悟空",
age: 19,
gender: "male",
address: "花果山"
})
2.保存Document對象
Stu.save(function(err){});
3.修改Document對象
(1).doc.age = 18;
doc.save();
(2).doc.update({$set:{age:28}},function(err){})
(3).doc.set("name","孫悟空");
4.刪除Document對象
doc.remove(function (err) {})
5.獲取文檔中指定的屬性值
(1).var demo = doc.get(“name”);
(2).var demo = doc.name;
6.將Document對象轉(zhuǎn)換為JSON數(shù)據(jù)
doc.toJSON();
7.將Document對象轉(zhuǎn)換為object數(shù)據(jù)
doc.toObject();
//注意:轉(zhuǎn)換為普通的js對象以后,所有的Document對象的方法或?qū)傩远紱]有用啦
文集推薦:
Java基礎(chǔ)方法集1
Python基礎(chǔ)知識完整版
Spring Boot學習筆記
Linux指令進階
Java高并發(fā)編程
SpringMVC基礎(chǔ)知識進階
Mysql基礎(chǔ)知識完整版
健康管理系統(tǒng)學習花絮(學習記錄)
Node.js基礎(chǔ)知識(隨手筆記)
MongoDB基礎(chǔ)知識
Dubbo學習筆記
Vue學習筆記(隨手筆記)
聲明:發(fā)表此文是出于傳遞更多信息之目的。若有來源標注錯誤或侵犯了您的合法權(quán)益铣墨,請作者持權(quán)屬證明與本我們(QQ:981086665;郵箱:981086665@qq.com)聯(lián)系聯(lián)系,我們將及時更正金刁、刪除,謝謝议薪。