mongodb相關(guān)

常見命令

show dbs //顯示有哪些數(shù)據(jù)庫
use test //使用某個(gè)數(shù)據(jù)庫,如果已經(jīng)有了該數(shù)據(jù)庫會(huì)切換到該數(shù)據(jù)庫脓匿;如果沒有會(huì)創(chuàng)建該數(shù)據(jù)庫静檬,創(chuàng)建數(shù)據(jù)的時(shí)候,只有往數(shù)據(jù)庫里面插入值的時(shí)候赚导,通過show dbs 才會(huì)看見真正創(chuàng)建該數(shù)據(jù)庫
db.createCollection('tests')//創(chuàng)建一個(gè)集合
db.test2.insert({"name":"hello"})//往集合中插入數(shù)據(jù)派殷,也會(huì)自動(dòng)創(chuàng)建集合
db //查看當(dāng)前是哪個(gè)數(shù)據(jù)庫
use test && db.dropDatabase() //刪除數(shù)據(jù)庫
show tables //顯示有哪些集合
db.test.drop() //刪除數(shù)據(jù)庫里面的集合
db.test.insert()//往集合里面插入文檔 (增)
db.test1.remove({"name":111})//刪除集合里面的文檔 刪)
b.test1.update({name:1}, {$set:{age:3}})//修改集合里面的文檔 (改)
db.test.find()//查詢集合里面的文檔 (查)
db.test1.count()// 返回集合里面的文檔的條數(shù)

/////////////////////// 增加相關(guān)操作 //////////////////////////////////
db.test1.insert({name:1,age:2}) //往test1集合里面添加一條數(shù)據(jù)
db.test1.insert([{name:1},{age:2}, {name:1,age:2}]) //批量插入多條數(shù)據(jù)

//insert.js
var db = connect('test');
for(var i=0; i<1000; i++) {
    db.test1.insert({name:'mzr', age:i});
}
//進(jìn)入到mongo客戶端录语,執(zhí)行l(wèi)oad('./insert.js') 插入多條數(shù)據(jù),只是模擬魂迄,這種情況插入多條數(shù)據(jù)不建議

////////////////////// 刪除相關(guān)操作 //////////////////////////////////
db.test1.remove({}) //刪除test1集合里面所有的數(shù)據(jù)


////////////////////// 更新相關(guān)操作 /////////////////////////////////
db.test1.update({name:1},{$inc:{age:2}}) //找出name是1的,并且更新age+2
db.test1.update({name:1}, {$push:{hobby:"1111"}}) //往數(shù)組里面添加一條數(shù)據(jù): 更新name為1的耸三,并且往hobby字段里面push一條數(shù)據(jù)
db.test1.update({name:1}, {$addToSet: {hobby:'1111'}}) // 往數(shù)組里面添加一條不重復(fù)的數(shù)據(jù):更新name為1的乱陡,并且往hobby字段里面添加一條數(shù)據(jù),如果有了仪壮,就不會(huì)再添加
db.test1.update({name:1}, {$addToSet: {hobby:{$each:[1,2,3,4]}}})//往數(shù)組里面添加多條不重復(fù)的數(shù)據(jù): 更新name為1的憨颠,并且往hobby字段里面添加數(shù)據(jù),怎么添加呢积锅,遍歷添加多條數(shù)據(jù)
db.test1.update({name:1}, {$pop:{hobby:1}}) //刪除hobby數(shù)組里面的最后一個(gè)元素
db.test1.update({name:1}, {$set:{"hobby.4":"你好啊"}})//將hobby數(shù)組里面的索引為4的元素改了
//以腳本的形式運(yùn)行
var modify = {
//要操作的集合
    findAndModify: 'test1',
//指定查詢條件
    query: {name: 4}
//指定如何更新爽彤,把年齡加100
    update: {$set :{age: 100}}
//指定返回的字段
    fields: { age: true, _id: false }
//表示按age字段進(jìn)行正序排列
    sort:{age:1},
//new為true,返回更新后的文檔
    new: true
}
var db = connect('test');
var result = db. runCommand(modify);//可以返回更新后的文檔
printjson(result)


//////////////////////  查詢相關(guān)操作 /////////////////////////////////
db.test1.find({},{name:1,_id:0}) //只需要name字段,排序_id字段
db.test1.find({'_id':{"$lt":ObjectId("5b334f96c3061fed28b54b14")}}).sort({"_id":-1}).limit(1)//查詢某

常見運(yùn)算符

$set //設(shè)置值更新某個(gè)值
$unset  //刪除某個(gè)字段
$gt  //表示大于
$lt  //表示小于
$gte  //表示大于等于
$lte  //表示小于等于
$inc  //表示增加 //increment簡(jiǎn)寫
$push //往數(shù)據(jù)里面追加一條數(shù)據(jù)
$ne //不等于
$addToSet //如果原來有數(shù)據(jù)了就不會(huì)再添加了

查詢相關(guān)操作(1分插入缚陷,9分查詢)

  • 通過id進(jìn)行查詢 db.collectoin_name.find({"_id" : ObjectId("value")})

  • 查詢指定列 db.collection_name.find({queryWhere},{key:1,key:1}) eg: db.test1.find({}, {age:1, _id:0})

    1. collection_name 集合的名字
    2. queryWhere 參閱查詢條件操作符
    3. key 指定要返回的列
    4. 1 表示要顯示适篙, 0表示不顯示
  • 查詢匹配結(jié)果的第一條數(shù)據(jù),當(dāng)找到符合條件的就不會(huì)往下繼續(xù)遍歷查找,效率高 db.collection_name.findOne() eg: db.test1.findOne({},{age:1, name:1,_id:0})

  • $in 查詢符合某幾個(gè)值的記錄(枚舉)db.test1.find({age:{$in:[3,2]}}, {name:1,age:1, _id:0})// 查詢age為3和2的

  • $nin 查詢不符合某幾個(gè)值的記錄 db.test1.find({age:{$nin:[3,2]}}, {name:1,age:1, _id:0}) //查詢age不是2和3的

  • 查詢某個(gè)范圍之間的記錄(不包前箫爷,也不包后) db.test1.find({age:{$gt:2, $lt:7}}) //查詢age>2并且age<7的

  • 查詢某個(gè)范圍之間的記錄(包前也包后) db.test1.find({age:{$gte:2, $lte:7}}) //查詢age>=2并且age<=7的

  • 查詢不在某個(gè)范圍之類的記錄 db.test1.find({name:{$not:{$gt:2, $lt:7}}}) //查詢age<2或者age>7的

  • $where 查詢單邊范圍的數(shù)據(jù) db.test1.find({$where:"this.age>4"}) //查詢age>4的數(shù)據(jù)
    db.test1.find({$where:"this.age>4&& this.age<8"})//查詢age大于4的嚷节,并且age小于8的

  • 查詢喜歡某個(gè)愛好的記錄

     > db.test1.find() //查詢當(dāng)前集合中的所有的記錄
    { "_id" : ObjectId("5b34a0cad70d23f4a9907fb6"), "name" : 1, "hobby" : [ "smoking" ] }
    { "_id" : ObjectId("5b34a13cd70d23f4a9907fb7"), "name" : 2, "hobby" : [ "drinking" ] }
    { "_id" : ObjectId("5b34a143d70d23f4a9907fb8"), "name" : 2, "hobby" : [ "hair" ] }
    { "_id" : ObjectId("5b34a165d70d23f4a9907fb9"), "name" : 2, "hobby" : [ "smoking", "drinking" ] }
    > db.test1.find({hobby:'smoking'}) //查詢喜歡抽煙的
    { "_id" : ObjectId("5b34a0cad70d23f4a9907fb6"), "name" : 1, "hobby" : [ "smoking" ] }
    { "_id" : ObjectId("5b34a165d70d23f4a9907fb9"), "name" : 2, "hobby" : [ "smoking", "drinking" ] }
    > db.test1.find({hobby:{$all:['smoking', 'drinking']}}) //查詢既喜歡抽煙又喜歡喝酒的記錄聂儒,且的關(guān)系
    { "_id" : ObjectId("5b34a165d70d23f4a9907fb9"), "name" : 2, "hobby" : [ "smoking", "drinking" ] }
    > db.test1.find({hobby:{$in:['smoking', 'drinking']}}) //查詢喜歡抽煙或者喝酒的,或的關(guān)系
    { "_id" : ObjectId("5b34a0cad70d23f4a9907fb6"), "name" : 1, "hobby" : [ "smoking" ] }
    { "_id" : ObjectId("5b34a13cd70d23f4a9907fb7"), "name" : 2, "hobby" : [ "drinking" ] }
    { "_id" : ObjectId("5b34a165d70d23f4a9907fb9"), "name" : 2, "hobby" : [ "smoking", "drinking" ] }
    > db.test1.find({hobby:{$size:2}}) //查詢有兩個(gè)愛好的人
    { "_id" : ObjectId("5b34a165d70d23f4a9907fb9"), "name" : 2, "hobby" : [ "smoking", "drinking" ] }
    > db.test1.find({hobby:{$size:2}}, {hobby:{$slice:1}, _id:0}) //查詢有兩個(gè)愛好的硫痰,并且hobby字段只要里面的第一個(gè)數(shù)據(jù)衩婚; $slice:2,截取前兩個(gè) 
    { "name" : 2, "hobby" : [ "smoking" ] }
    { "name" : 3, "hobby" : [ "smoking" ] }
    
  • 正則查詢 db.collection.find({key:/value/}) eg: db.collection.find({key:/age/})

  • 大于符號(hào)查詢 db.collectoin_name.find({<key>:{$gt:<value>}}) eg: db.students.find({age:{$gt:30}})

  • 大于等于符號(hào)查詢 db.collectoin_name.find({<key>:{$gte:<value>}}) eg: db.students.find({age: {$gte: 30}})

  • 小于符號(hào)查詢 db.collectoin_name.find( {<key>:{$lt:<value>}}) eg: db.students.find({age: {$lt: 30}})查詢age 小于30的數(shù)據(jù)

  • 小于等于符號(hào)查詢 db.collectoin_name.find({<key>:{$lte:<value>}}) eg: db.students.find({age: {$lte: 30}})

  • 同時(shí)使用 $gte和$lte db.collectoin_name.find({<key>:{$gte:<value>},<key>:{$lte:<value>}}) eg: db.students.find({age: {$gte: 30, $lte: 50}})

  • 等于 db.collectoin_name.find({<key>:<value>,<key>:<value>}) eg: db.students.find({"age": 30})

  • 使用 _id進(jìn)行查詢 使用_id進(jìn)行查詢 db.collectoin_name.find({"_id" : ObjectId("value")}) eg: db.students.find({_id:ObjectId("5adb666ecd738e9771638985")})

  • 查詢結(jié)果集的條數(shù) db.collectoin_name.find().count() eg: db.students.find().count()

  • 正則匹配 db.collection.find({key:/value/}) eg: db.students.find({name:/^age/})

  • and 與 db.collection_name.find({key1:value1, key2:value2}) eg: db.students.find({name:'zfpx',age:1})

  • or 或 db.collection.find({$or:[{key1:value1}, {key2:value2}]}) eg:db.students.find({$or:[{age:30},{age:50}]})
    -and和or聯(lián)用 db.collection.find({key1:value1, $or:[{key1:value1}, {key2:value2}]}) eg: db.students.find({name:'zfpx',$or:[{age:30},{age:50}]}) 查詢 name是zfpx 并且 age是30 或者 age是 50 的數(shù)據(jù)

  • limit 分頁查詢 db.collectoin_name.find().limit(number)eg: db.students.find().limit(3)

  • skip跳過指定數(shù)量查詢 db.collectoin_name.find().skip(number) eg: db.students.find().skip(3)

  • skip+limit實(shí)現(xiàn)分頁功能 db.collectoin_name.find().skip(skipNum).limit(limitNum) eg: db.students.find().skip(3).limit(3);跳過3條并且取出三條

  • sort 排序 db.collectoin_name.find().sort({key:1}) 1表示升序效斑,-1表示降序 eg: db.students.find().sort({age:1})

通過配置項(xiàng)啟動(dòng)數(shù)據(jù)庫

  • 新建配置文件mongod.conf
    datapath=/data/mongodb/data //存放數(shù)據(jù)的目錄
    logpath=/data/mongodb/log //存放日子的目錄
    port=5000 //開啟的端口號(hào)
    fork=true //在后臺(tái)運(yùn)行
    auth=true //以安全方式啟動(dòng)數(shù)據(jù)庫非春,默認(rèn)不驗(yàn)證
    
  • 啟動(dòng)服務(wù)器 mongod --config mongod.conf
  • 啟動(dòng)客戶端 mongo --port 5000
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缓屠,隨后出現(xiàn)的幾起案子税娜,更是在濱河造成了極大的恐慌,老刑警劉巖藏研,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異概行,居然都是意外死亡蠢挡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門凳忙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來业踏,“玉大人,你說我怎么就攤上這事涧卵∏诩遥” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵柳恐,是天一觀的道長(zhǎng)伐脖。 經(jīng)常有香客問我,道長(zhǎng)乐设,這世上最難降的妖魔是什么讼庇? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮近尚,結(jié)果婚禮上蠕啄,老公的妹妹穿的比我還像新娘。我一直安慰自己戈锻,他們只是感情好歼跟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著格遭,像睡著了一般哈街。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拒迅,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天叹卷,我揣著相機(jī)與錄音撼港,去河邊找鬼。 笑死骤竹,一個(gè)胖子當(dāng)著我的面吹牛帝牡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒙揣,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼靶溜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了懒震?” 一聲冷哼從身側(cè)響起罩息,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎个扰,沒想到半個(gè)月后瓷炮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡递宅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年娘香,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办龄。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烘绽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俐填,到底是詐尸還是另有隱情安接,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布英融,位于F島的核電站盏檐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驶悟。R本人自食惡果不足惜糯笙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撩银。 院中可真熱鬧给涕,春花似錦、人聲如沸额获。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抄邀。三九已至耘眨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間境肾,已是汗流浹背剔难。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工胆屿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偶宫。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓非迹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親纯趋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子憎兽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容