MongoDb的查詢語法

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})

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章