MongoDB基本語法筆記
阿新 • • 發佈:2018-11-13
服務端啟動
./mongod [--dbpath=/data/db]
/data/db mongo預設資料庫位置
客戶端連線
./mongo ip:port/dbname -u user -p password
資料庫操作:
登入後預設資料庫test
顯示資料庫列表
show dbs
建立/切換 資料庫
use dbname
檢視當前資料庫
db
刪除當前所選資料庫
db.dropdatabase
增刪改查:
插入
db.collectionName.insert({"key":document});
刪除
db.collectionName.remove({"key":document});
更新
//update 只能更新已存在的
db.collectionName.update({"key":document},{"key":new document});
//upsert 存在更新,不存在插入
db.collectionName,update({"key":document},{"key":new document},true);
查詢
db.collectionName.find({"key":document}); //返回選擇的列,顯示col2、col3列 db.collectionName.find({"key":document},{"col1":0,"col2":1,"col3":1});
1、$lt、$lte、$gt、$gte、$ne
lte =less than equal
gte=greater than equal
ne=not equal
// 18<= age <25
db.collectionName.find({"age":{"$gte":18,"$lt":25}});
// 註冊時間18年以前的
start=new Date("01/01/2018");
db.collectionName.find({"registerTime":{"$lt":start}});
2、$in、$nin、$or 與mysql中in、not in、or不同的是 值的型別可以不同
//查詢name=H2o或age=20的人
//"H2o"與20型別不同
db.collectionName.find({"$or":[{"age":20},{"name":"H2o"}]});
//查詢年齡為18、19、20、21、22、23的人
db.collectionName.find({"age":{"$in":[18,19,20,21,22,23]}});
3、$not、$mod 取餘
//查詢符合 x%5=1 的x 如:1,6,11
db.collectionName.find({"numbers":{"$mod":[5,1]}});
//查詢符合 x%5!=1 的x 如:2,3,4,5,7,8,9,10
db.collectionName.find({"numbers":{"$not":{"$mod":[5,1]}}});
4、$exist
//查詢到的結果為:sex==null 或者沒有 sex欄位的記錄
db.collectionName.find({"sex":null});
//查詢到的結果為:sex==null
db.collectionName.find({"sex":{"$in":[null],"$exist":true}});
5、正則表示式
//查詢到 明朝那些事兒1、明朝那些事兒2、明朝那些事兒3等等
db.collectionName.find({"title":/明朝那些事兒?/});
6、陣列 $all (全匹配)、$size(陣列大小)、$slice(擷取)
//arr下有value1與value2才匹配
db.collectionName.find({"arr":{"$all":["value1","value2"]}});
//arr大小為5則匹配
db.collectionName.find({"arr":{"$size":5}});
//查詢{"key":document}下的arr的前10個
db.collectionName.find({"key":document},{"arr":{"$slice":10}});
//後10個
db.collectionName.find({"key":document},{"arr":{"$slice":-10}});
7、查詢內嵌文件 $elemMatch
//查詢key下面的key1=value1且key2>30 的記錄
db.collectionName.find({"key":{"$elemeMatch":{"key1":"value1"},{"key2":{"$gt":30}}}});
8、$where(慢:每個文件從BSON轉換成JavaScript物件,然後通過$where的表述式來執行)
//查詢價格+10==100的記錄
//以下兩種寫法等價
db.collectionName.find({"$where":"this.price+10==100"});
db.collectionName.find({"$where":function(){return this.price+10==100;}});
9、limit、skip、sort
//按price升序排序,跳過前兩個,然後取10個。即取第3-12個。
// 1升序 -1降序
db.collectionName.find().skip(2).limit(10).sort({"price":1});
10、
db.collectionName.find({"key":"value"}).sort({"x":1});
//實際上執行時,shell會轉化成
db.collectionName.find({"$query":{"key":"value"},"$orderby":{"x":1}});