查詢練習一部分:
//1.進入my_test數據庫
use my_test
//2.向數據庫的user集合中插入一個文檔
db.users.insert({username:"孫悟空"});
//3.查詢user集合中的文檔
db.users.find();
//4.向數據庫的user集合中插入一個文檔
db.users.insert({username:"孫嬌嬌"});
//5.查詢數據庫user集合中的文檔
db.users.find();
//6.統計數據庫user集合中的文檔數量
db.users.find().count();
//7.查詢數據庫user集合中username為孫悟空的文檔
db.users.find({username:"孫悟空"});
//8.向數據庫user集合中的username為孫悟空的文檔,添加一個address屬性,屬性值為花果山
db.users.update({username:"孫悟空"},{$set:{address:"花果山"}});
//9.使用{username:"唐僧"} 替換 username 為 孫嬌嬌的文檔
db.users.replaceOne({username:"孫嬌嬌"},{username:"唐僧"});
//10.刪除username為孫悟空的文檔的address屬性
db.users.update({username:"孫悟空"},{$unset:{address:1}});
//11.向username為孫悟空的文檔中,添加一個hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}//MongoDB的文檔的屬性值也可以是一個文檔,當一個文檔的屬性值是一個文檔時,我們稱這個文檔叫做 內嵌文檔
db.users.update({username:"孫悟空"},{$set:{hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}}}); db.users.find();
//12.向username為唐僧的文檔中,添加一個hobby:{movies:["A Chinese Odyssey","King of comedy"]}
db.users.update({username:"唐僧"},{$set:{hobby:{movies:["A Chinese Odyssey","King of comedy"]}}}); db.users.find();
//13.查詢喜歡電影hero的文檔
//MongoDB支持直接通過內嵌文檔的屬性進行查詢,如果要查詢內嵌文檔則可以通過.的形式來匹配
//如果要通過內嵌文檔來對文檔進行查詢,此時屬性名必須使用引號
db.users.find({'hobby.movies':"hero"});
//14.向唐僧中添加一個新的電影Interstellar
//$push 用於向數組中添加一個新的元素
//$addToSet 用於向數組中添加一個新的元素
db.users.update({username:"唐僧"},{$push:{"hobby.movies":"Insterstellar"}}); db.users.find();
//15.刪除喜歡beijing的用戶
db.users.remove({"hobby.cities":"beijing"});
db.users.find();
//16.刪除user集合
db.users.remove({}); db.users.drop(); show dbs;
//17.向numbers中插入20000條數據
//31.5s for(var i=1 ; i<= 20000; i++){ db.numbers.insert({num:i}); } db.numbers.find(); db.numbers.remove();
//1.7s var arr = []; for(var i =1;i<=20000; i++){ arr.push({num:i}); } db.numbers.insert(arr); db.numbers.remove();
查詢練習二部分:
//18.查詢numbers中num為500的文檔
db.numbers.find({num:500});
//19.查詢numbers中num大於5000的文檔
//$qt:大於
//$eq:等於
//$lt:小於
db.numbers.find({num:{$gt:5000}});
//20.查詢numbers中num小於30的文檔
db.numbers.find({num:{$lt:30}});
//21.查詢numbers中num大於40小於50的文檔
db.numbers.find({num:{$gt:40,$lt:50}});
//22.查詢numbers中num大於19996的文檔
db.numbers.find({num:{$gt:19996}});
//23.查看numbers集合中的前10條數據
db.numbers.find({num:{$lte:10}});
//limit()設置顯示數據的上限
db.numbers.find().limit(10);
//在開發時,我們絕對不會執行不帶條件的查詢
db.numbers.find();
//24.查看numbers集合中的第11條到20條數據
/* 分頁 每頁顯示10條 1-10011-201021-3020 。。。 skip((頁碼-1) * 每頁顯示的條數).limit(每頁顯示的條數);
skip()用於跳過指定數量的數據 MongoDB會自動調整skip和limit的位置*/
db.numbers.find().skip(10).limit(10);
//25.查看numbers集合中的第21條到30條數據
db.numbers.find().skip(20).limit(10);
查詢練習第三部分:
//26.將dept和emp集合導入到數據庫中
db.dept.find();
db.emp.find();
//27.查詢工資小於2000的員工
db.emp.find(sal:{$lt:2000});
//28.查詢工資在1000-2000之間的員工
db.emp.find(sal:{$lt:2000,$gt:1000});
//29.查詢工資小於1000或大於2500的員工
//$or:[]
db.emp.find({$or:[{sal:{$lt:1000}},{sal:{$gt:2500}}]});
//30.查詢財務部的所有員工
//(depno)
db.dept.find({}); var depno = db.dept.findOne({dname:"財務部"}).deptno; db.emp.find({depno:depno});
//31.查詢銷售部的所有員工
var depno = db.dept.findOne({dname:"銷售部"}).deptno; db.emp.find({depno:depno});
//32.查詢所有mgr為7698的所有員工
db.emp.find({mgr:7698});
//33.為所有薪資低於1000的員工增加工資400元
db.emp.updateMany({sal:{$lte:1000}},{$inc:{sal:400}}); db.emp.find();
補充sort和投影:
sort和投影
1、查詢文檔時,默認情況是按照_id的值進行排列(升序)
sort()可以用來指定文檔的排序的規則,sort()需要傳遞一個對象來指定排序規則 1表示升序 -1表示降序
limit skip sort 可以以任意的順序進行調用
db.emp.find({}).sort({sal:1,empno:-1});
在查詢時,可以在第二個參數的位置來設置查詢結果的 投影
db.emp.find({},{ename:1,_id:0, sal:1});