1.數據庫與集合的基礎操作
#查看數據庫
show dbs;
#切換數據庫
use luban;
#創建數據庫與集合,在插入數據時會自動 創建數據庫與集和
db.friend.insertOne({name:"wukong",sex:"man"});
#查看集合
show tables;
show collections;
#刪除集合
db.friend.drop();
#刪除數據庫
db.dropDatabase();
2.數據的新增的方式
關於Mongodb數據插入的說明
1). 數據庫的新增不需要序先設計模型結構,插入數據時會自動創建。
2). 同一個集合中不同數據字段結構可以不一樣
插入相關方法:
```
//插入單條
db.friend.insertOne({name:"wukong",sex:"man"});
// 插入多條
db.friend.insertMany([
{name:"wukong",sex:"man"},{name:"diaocan",sex:"woman",age:18,birthday:new Date("1995-11-02")},{name:"zixiao",sex:"woman"}
]);
// 指定ID
db.friend.insert([
{_id:1,name:"wokong",sex:"man",age:1},
{_id:2,name:"diaocan",sex:"women",birthday:new Date("1988-11- 11")}
])
```
3、數據的查詢
3.1.基礎查詢:
```
#基於ID查找
db.emp.find({_id:1101})
#基於屬性查找
db.emp.find({"name":"魯班"})
# && 運算 與大於 運算
db.emp.find({"job":"講師","salary":{$gt:8000}})
# in 運算
db.emp.find({"job":{$in:["講師","客服部"]}})
# or 運算
db.emp.find({$or:[{job:"講師" },{job:"客服部"}] })
4.排序與分頁:
// sort skip limit
```
db.emp.find().sort({dep:1,salary:-1}).skip(5).limit(2)
5.嵌套查詢:
```
# 錯誤示例:無結果
db.student.find({grade:{redis:87,dubbo:90 });
#錯誤示例:無結果
db.student.find({grade:{redis:87,dubbo:90,zookeper:85} })
# 基於複合屬性查找 時必須包含其所有的值 並且順序一至
db.student.find({grade:{redis:87,zookeper:85,dubbo:90} })
#基於複合屬性當中的指定值 查找。注:名稱必須用雙引號
db.student.find({"grade.redis":87});
db.student.find({"grade.redis":{"$gt":80}});
6.數組查詢:
```
db.subject.insertMany([
{_id:"001",name:"陳霸天",subjects:["redis","zookeper","dubbo"]},
{_id:"002",name:"張明明",subjects:["redis","Java","mySql"]},
{_id:"003",name:"肖炎炎",subjects:["mySql","zookeper","bootstrap"]},
{_id:"004",name:"李鬼才",subjects:["Java","dubbo","Java"]},
])
```
```
#無結果
db.subject.find({subjects:["redis","zookeper"]})
#無結果
db.subject.find({subjects:["zookeper","redis","dubbo"]})
# 與嵌套查詢一樣,必須是所有的值 並且順序一至
db.subject.find({subjects:["redis","zookeper","dubbo"]})
# $all 匹配數組中包含該兩項的值。注:順序不作要求
db.subject.find({subjects:{"$all": ["redis","zookeper"]}})
注:
# 簡化數組查詢
db.subject.find({subjects:"redis"})
# 簡化數組查詢 ,匹配數組中存在任意一值。與$all相對應
db.subject.find({subjects:{$in: ["redis","zookeper"]}})
7.數組嵌套查詢:
```
#基礎查詢 ,必須查詢全部,且順序一至
db.subject2.find({subjects:{name:"redis",hour:12} })
#指定查詢第一個數組 課時大於12
db.subject2.find({"subjects.0.hour":{$gt:12}})
#查詢任科目 課時大於12
db.subject2.find({"subjects.hour":{$gt:12}})
# $elemMatch 元素匹配,指定屬性滿足,且不要求順序一至
db.subject2.find({subjects:{$elemMatch:{name:"redis",hour:12}}})
# 數組中任意元素匹配 不限定在同一個對象當中
db.subject2.find({"subjects.name":"mysql","subjects.hour":120})