mongoDB常用
登陸{本地的話直接mongo,如果是docker直接就這樣docker exec -it 2d71a13e3128 mongo或者直接這樣 mongo 127.0.0.1:27017
}
退出是 {exit
}database級操作{查看服務器上的數據庫{show dbs}切換數據庫 {use data}查看所有集合{show collections}創建數據庫 {mongo中創建數據庫采用的也是use命令,如果use后面跟的數據庫名不存在,那么mongo將會新建該數據庫。不過,實際上只執行use命令后,mongo是不會新建該數據庫的,直到你像該數據庫中插入了數據。use test2 db.hello.insert({"name":"testdb"}) 該操作會在test2數據庫中新建一個hello集合,并在其中插入一條記錄}查詢{db.getCollection('數據集合').find({條件})如果想格式化輸出,可以直接后面追加.pretty()}刪除當前數據庫 { db.dropDatabase() **/在主服務器上操作的時候要慎重}查看當前數據庫{db}
}collection級操作
{新建collection{db.createCollection("Hello") [直接向一個不存在的Collection里寫一條數據,會默認直接創建這個Collection]}刪除collectio{db.Hello.drop()}重命名{db.hello2.renameCollection("HELLO")} 查看當前數據庫中的所有collection{ show collections}建立索引在HELLO集合上,建立對ID字段的索引,1代表升序。{db.HELLO.ensureIndex({ID:1})}
}Record級的操作
{插入{向A集合中插入兩條記錄{db.A.insert({'name':'Gal Gadot','gender':'female','age':28,'salary':11000}) db.A.insert({'name':'Mikie Hara','gender':'female','age':26,'salary':7000}) } 同樣也可以用save完成類似的插入操作 {db.A.save({'name':'Wentworth Earl Miller','gender':'male','age':41, 'salary':33000})}}查找{查找A集合中的所有記錄{db.A.find()}Exact Equa:查找集合中的符合條件的記錄{單一條件:查詢age為了28的數據. db.A.find({'age':28})}Great Than:大于{查詢salary大于10000的數據 db.A.find({salary:{$gt:10000}}) }Fuzzy Match:包含{查詢name中包含'l'的數據 db.A.find({name:/l/}) 查詢name以G打頭的數據 db.A.find({name:/^G/})}查找條件是某個字段是否存在{查找A集合中存在ID字段的{db.A.find({ID:{$exists:true}})}}多條件"與"{查詢age小于30,salary大于10000的數據db.A.find({age:{$lt:30},salary:{$gt:10000}}) }多條件“或”{查詢age小于30,或者salary大于10000的記錄 db.A.find({$or:[{salary:{$gt:10000}},{age:{$lt:30}}]}) }查詢第一條記錄 findOne(){返回上面的那個例子的第一條db.A.findOne({$or:[{salary:{$gt:10000}},{age:{$lt:30}}]}) }查詢記錄的指定字段{只顯示name字段(沒有name的只顯示_id,有的同時顯示_id和name) db.A.find({},{name:1})}查詢指定字段的數據,并去重{查詢gender字段的數據,并去掉重復數據 db.A.distinct('gender')}對查詢結果集的操作{Pretty Print {Mongo里面有兩個格式化輸出方法{db.collection.pretty()db.collection.forEach(printjson)}指定結果集顯示的條目{顯示結果集中的前3條記錄{db.A.find().limit(3)}查詢第2條以后的所有數據(跳過){db.A.find().skip(2)}對結果集排序{按照salary字段進行升序或者降序排序,如果沒有salary字段的話,就默認為最小,比負數還小,就當他是無窮小。db.A.find().sort({salary:1})db.A.find().sort({salary:-1})}輸出結果條數{db.A.find().count()}刪除數據{刪除集合里所有數據 db.A.remove({})刪除定義了y字段的數據 db.test.remove({y:{$exists:true}})也可以只刪除固定條數db.test.remove({x:{$exists:true}},1)tip:db.collection.remove是刪除了集合中所有的記錄,原有的索引等信息還在,而db.collection.drop()是把整個集合都刪除掉(包括索引)}}更新操作{db.collection.update(criteria, objNew, upsert, multi )criteria:update的查詢條件,類似sql update查詢內where后面的objNew:update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的。upsert : 如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。multi : mongodb默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新 例子{db.test.update({x:'x'},{$set:{x:'2'}},false,false) 把集合test中x='x'的中的x改成‘2’,如果沒有找到就不該,并且如果找到多條,只改動第一條db.test.update({x:'x'},{$set:{x:'2'}},false,true) 跟上面的區別是如果找到多條,那么全都改動。db.test.update({x:'x'},{$set:{w:'2'}},true,true) 跟上一條的區別是,如果沒查到x:'x'那么久單獨創建一條記錄,如果查到了x:'x'但是沒有w這個字段,那么就創建這個字段。同時如果條件是不等式那樣的條件,那么當創建新的記錄的時候,不會出現條件字段。只會出現后面的設置的字段。比如db.test.update({w:'x'},{$set:{q:'2'}},true,true) 如果不存在w這個字段,則是創建新的記錄 {w:'x',q:'2'},而db.test.update({w:{$lt:30}},{$set:{q:'2'}},true,true) 如果不存在w字段,那么創建新的一條數據{q:'2'}其中是沒有w字段的。} }
}
$gt:大于
$lt:小于
$gte:大于或等于
$lte:小于或等于
不等于 $ne
這里還有一篇其他小伙伴整理的
https://blog.csdn.net/AlbertFly/article/details/83001012
mongodb中的insert和save的區別
https://blog.csdn.net/qq_38603247/article/details/82633745
官方文檔
https://docs.mongodb.com/manual/storage/
總結
- 上一篇: 9.逆向-函数调用约定
- 下一篇: nodejs-安装/helloworld