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()
二、文檔之間關係
文檔之間的關係分類:
- 一對一
- 一對多
- 多對多
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()