1. 程式人生 > >MongoDB基本語法筆記

MongoDB基本語法筆記

服務端啟動

./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}});