mongodb練習

mongodb練習

一、常見練習

//1.進入my_test數據庫
use my_test

//2.向數據庫的user集合中插入一個文檔  
db.users.insert({
    username:"sunwukong"
});

//3.查詢user集合中的文檔
db.users.find();

//4.向數據庫的user集合中插入一個文檔   
db.users.insert({
    username:"zhubajie"
});
   
//5.查詢數據庫user集合中的文檔
db.users.find();

//6.統計數據庫user集合中的文檔數量
db.users.find().count();

//7.查詢數據庫user集合中username爲sunwukong的文檔
db.users.find({username:"sunwukong"});

//8.向數據庫user集合中的username爲sunwukong的文檔,添加一個address屬性,屬性值爲huaguoshan
db.users.update({username:"sunwukong"},{$set:{address:"huaguoshan"}});


//9.使用{username:"tangseng"} 替換 username 爲 zhubajie的文檔
db.users.replaceOne({username:"zhubajie"},{username:"tangseng"});    
    
//10.刪除username爲sunwukong的文檔的address屬性
db.users.update({username:"sunwukong"},{$unset:{address:1}});


//11.向username爲sunwukong的文檔中,添加一個hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}
//MongoDB的文檔的屬性值也可以是一個文檔,當一個文檔的屬性值是一個文檔時,我們稱這個文檔叫做 內嵌文檔
db.users.update({username:"sunwukong"},{$set:{hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}}});
db.users.find();

//12.向username爲tangseng的文檔中,添加一個hobby:{movies:["A Chinese Odyssey","King of comedy"]}
db.users.update({username:"tangseng"},{$set:{hobby:{movies:["A Chinese Odyssey","King of comedy"]}}})

//13.查詢喜歡電影hero的文檔
//MongoDB支持直接通過內嵌文檔的屬性進行查詢,如果要查詢內嵌文檔則可以通過.的形式來匹配
//如果要通過內嵌文檔來對文檔進行查詢,此時屬性名必須使用引號 
db.users.find({'hobby.movies':"hero"});

//14.向tangseng中添加一個新的電影Interstellar
//$push 用於向數組中添加一個新的元素
//$addToSet 向數組中添加一個新元素 , 如果數組中已經存在了該元素,則不會添加
db.users.update({username:"tangseng"},{$push:{"hobby.movies":"Interstellar"}});
db.users.update({username:"tangseng"},{$addToSet:{"hobby.movies":"Interstellar"}});
db.users.find();

//15.刪除喜歡beijing的用戶
db.users.remove({"hobby.cities":"beijing"});

//16.刪除user集合
db.users.remove({});
db.users.drop();

show dbs;

//17.向numbers中插入20000條數據 7.2s
for(var i=1 ; i<=20000 ; i++){
    db.numbers.insert({num:i});
}

db.numbers.find()

db.numbers.remove({});


//0.4s
var arr = [];

for(var i=1 ; i<=20000 ; i++){
    arr.push({num:i});
}

db.numbers.insert(arr);

//18.查詢numbers中num爲500的文檔
db.numbers.find({num:500})

//19.查詢numbers中num大於5000的文檔
db.numbers.find({num:{$gt:500}});
db.numbers.find({num:{$eq:500}});

//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-10     0
        11-20    10
        21-30    20
        。。。
        
        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);

db.numbers.find().limit(10).skip(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的員工
db.emp.find({$or:[{sal:{$lt:1000}} , {sal:{$gt:2500}}]});

//30.查詢財務部的所有員工
//(depno)
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()

二、文檔之間關係

文檔之間的關係分類:

  1. 一對一
  2. 一對多
  3. 多對多
db.wifeAndHusband.insert([
    {
        name:"黃蓉",
        husband:{
            name:"郭靖"
        }
    },{
        name:"潘金蓮",
        husband:{
            name:"武大郎"
        }
    }

]);

db.wifeAndHusband.find();


//一對多 用戶(users) 和 訂單(orders)
db.users.insert([{
    username:"swk"
    },{
    username:"zbj"
}]);

db.order.insert({
    
    list:["牛肉","漫畫"],
    user_id: ObjectId("59c47e35241d8d36a1d50de0")
    
});

db.users.find()
db.order.find()

//查找用戶swk的訂單
var user_id = db.users.findOne({username:"zbj"})._id;
db.order.find({user_id:user_id});

//多對多
db.teachers.insert([
    {name:"洪七公"},
    {name:"黃藥師"},
    {name:"龜仙人"}
]);

db.stus.insert([
    {
        name:"郭靖",
        tech_ids:[
            ObjectId("59c4806d241d8d36a1d50de4"),
            ObjectId("59c4806d241d8d36a1d50de5")
        ]
    },{
        name:"孫悟空",
        tech_ids:[
            ObjectId("59c4806d241d8d36a1d50de4"),
            ObjectId("59c4806d241d8d36a1d50de5"),
            ObjectId("59c4806d241d8d36a1d50de6")
        ]
    }
])

db.teachers.find()

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