基礎(chǔ)命令(建庫建表):
????查看當(dāng)前的數(shù)據(jù)庫:
????????show dbs
????選擇庫:? ??
????????use databaseName
? ??查看當(dāng)前庫下的表(collection):
????????show tables/collections?
? ? 建庫(Mongodb的庫是隱式創(chuàng)建,可以u(píng)se一個(gè)不存在的庫。然后在該庫下創(chuàng)建collection,即可完成建庫):
? ? ? ? ①創(chuàng)建collection
? ? ? ? ????db.createCollection(‘collectionName’)??
????????②隱式創(chuàng)建collection(直接向不存在的collection中插入數(shù)據(jù))?
? ? ? ? ????db.collectionName.insert(document);? ??
????????③刪除collection?? ??
? ? ? ? ????db.collectionName.drop()? ? ? ??
????????④刪除database
????????????db.dropDatabase();??
基礎(chǔ)命令(CURD):
????insert:
? ? ? ? db.collectionName.insert(document);
? ? delete:
? ??????db.collectionName.remove(查詢表達(dá)式, 選項(xiàng));
? ??????db.stu.remove({gender:’m’,true});? ?刪除stu表中g(shù)ender屬性為m的文檔,只刪除1行。
????????????①查詢表達(dá)式依然是個(gè)json對(duì)象
????????????②查詢表達(dá)式匹配的行,將被刪掉.
????????????③如果不寫查詢表達(dá)式,collections中的所有文檔將被刪掉.
? ? ? ????? ④選項(xiàng)指是否只刪一行, 默認(rèn)為false
? ? update:
????????db.collection.update(查詢表達(dá)式,新值,選項(xiàng));
? ? ? ? db.news.update({name:'QQ'},{name:'MSN'});? ?選中news表中,name值為QQ的文檔,并把其文檔值改為{name:’MSN’},
? ? ? ? 注意:這里新文檔直接替換了舊文檔,而不是修改署尤。文檔中的其他列也不見了,改后只有_id和name列了属拾。如果是想修改文檔的某列,可以用$set關(guān)鍵字
? ? ? ? db.collectionName.update({name:'QQ'},{$set:{name:’MSN’}})
????????????$set修改某列的值
????????????$unset刪除某個(gè)列
????????????$rename重命名某個(gè)列
????????????$inc增長(zhǎng)某個(gè)列
? ? ? ??upsert和mult參數(shù):{upsert:true/false , multi:true/false}
? ? ????db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true}); 如果有name=’wuyong’的文檔,將被修改俩由。如果沒有,將添加此新文檔
? ? ? ? db.news.update({age:21},{$set:{age:22}},{multi:true});??multi:是指修改多行苦银,把news中所有age=21的文檔,都修改
????find:
????????db.collections.find(查詢表達(dá)式,{列一:1,列二:1});
????????????①db.stu.find()????查詢所有文檔所有內(nèi)容
????????????②db.stu.find({},{gendre:1})????查詢所有文檔,的gender屬性 (_id屬性默認(rèn)總是查出來)
????????????③db.stu.find({},{gender:1, _id:0})????查詢所有文檔的gender屬性,且不查詢_id屬性
????????? ? ④db.stu.find({gender:’male’},{name:1,_id:0});????查詢所有g(shù)ender屬性值為male的文檔中的name屬性
查詢表達(dá)式:
????????1:最簡(jiǎn)單的查詢表達(dá)式
????????????{filed:value} ????是指查詢field列的值為value的文檔
? ? ? ? 2: $ne -->? !=
????????????{field:{$ne:value}}? ? 是指查filed列的值 不等于value的文檔
? ? ? ? 3: $nin --> not in
? ? ? ? 4: $all? ??
????????????{field:{$all:[v1,v2..]}}????是指取出field列是一個(gè)數(shù)組,且至少包含 v1,v2值
????????5: $exists
? ? ? ? ? ?{field:{$exists:1}}? ? ?查詢出含有field字段的文檔
????????6: $nor,
? ? ? ? ? ?{$nor,[條件1,條件2]}? ? ?是指所有條件都不滿足的文檔為真返回
????????7:用正則表達(dá)式查詢 以”諾基亞”開頭的商品
? ? ? ? ????例:db.goods.find({goods_name:/諾基亞.*/},{goods_name:1});
????????8:用$where表達(dá)式來查詢
????????????例:db.goods.find({$where:'this.cat_id != 3 && this.cat_id != 11'});
????????注意:用$where查詢時(shí), mongodb是把bson結(jié)構(gòu)的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為json結(jié)構(gòu)的對(duì)象,然后比較對(duì)象的屬性是否滿足表達(dá)式莹妒。速度較慢