1. 程式人生 > >Mongo連線與查詢

Mongo連線與查詢

最近一個專案中又接觸到了mongo資料庫,在本次測試過程中,需要自己查據,造資料,又重新整理了一遍用到的命令,以下是筆記整理

在mongodb裡面用到的主要概念是文件,是一個分散式文件儲存資料庫

一些概念對應

MongoDB的單個例項可以容納多個獨立的資料庫,每一個都有自己的集合和許可權,不同的資料庫也放置在不同的檔案中。

(一)mongo連線進入

1.連線mongodb

$mongo

2.檢視mongodb的版本

$db.version()

3.檢視當前有哪些資料庫(對應sql:show databases)

$show dbs

疑問:當前要是沒有切入admin資料庫,就無法檢視,不清楚原因。。

4.切入admin資料庫:(對應sql :use database)

$use admin(和mysql的切換資料庫一樣)

$db.auth("username","password")

$show dbs

5.檢視集合(對應sql show tables)

$show collections(也用show  這裡的collections也就是mysql的表概念差不多)

6.檢視文件(對應sql:  select)

$db.collections_name.find()----無篩選條件,一般情況下不要直接用,資料量太大

$db.collections_name.find({'key':'value'})-----有篩選條件

7.插入文件(對應sql: insert into)

db.collections.insertOne()------插入一個文件

db.collections.insertMany()------插入多個文件

db.collections.insert()------可以插入一個集合或多個文件

(二)mongo查詢語句

 

(1)查詢大於小於,一個區間

$gt 大於

$lte 小於

例:$db.collection.find({"time":{"$gt":153456789,"$lte":1534798932}}).limit(20)

解釋:返回時間大於153456789,小於153479893的記錄,限制20條

相當於sql:

$select * from collection where time >153456789 and time<1534798932 limit 20;

或:$select * from collection where time between 153456789 and 1534798932 limit 20;

(2)模糊匹配

簡單的模糊匹配:/string /

高階的模糊匹配,需要用到正則,*,^之類的(需要好好學習正則匹配)

例:$db.collection.find({"address":/順義區/}).limit(20)

解釋:返回address中包含順義區的記錄,限制20條

相當於sql:

$ select * from collection where address like"%順義區%" limit 20;

(3)統計條數

計數:count()

例:$db.collection.find().count()

解釋:返回collection的記錄條數

相當於sql:

$ select count(*) from collection;

(4)限制返回條數

limit(n);限制n條記錄返回

例:$ db.collection.find().limit(5)

相當於sql:

$ select * from collection limit 5;

(5)修改資料

update()

例:

修改多條資料:db.location_201811.update({'moid':'京AFW272'},{$set:{'moid':'京ABB170'}},{multi:true})

解釋:修改所有資料中車牌:“京AFW272”為“京ABB170

修改單條資料:db.location_201811.update({'moid':'京AFW272'},{$set:{'moid':'京ABB170'}})

解釋:修改一條資料中車牌:“京AFW272”為“京ABB170

相當於sql:

update collection set moid="京ABB170" where moid="京AFW272";

(6)插入資料

db.collection.insert({"_id","01","plate":"陝A33333","address":"浙江省杭州市"})

db.colletion.save({"_id":"02","plate":"陝A33333","address":"浙江省杭州市"})

insert()和save()都表示插入資料,當insert插入同樣的id時會出現異常,save會強制更新掉

(7)返回指定欄位的資料

例:db.collection.find({"plate":"陝A11111"},{"plate:1,"address":1,"time":1}).limit(5)

解釋:

前面:{"plate":"陝A11111"}表示查詢車牌為:陝A1111的資料

後面:{"plate:1,"address":1,"time":1}表示查詢需要返回的欄位

tip:

1.mongo規定除過id可以隨意設定為0或者1,表示返回或不返回,其餘欄位不允許交叉設定為0和1的情況

2.即除了_id,你不能在一個物件中同事指定0和1,如果你設定了一個欄位為0,則其他未設定的值預設為1,反之亦然

相當於sql:

$select plate,address,time from collection where plate='陝A11111' limit 5;

(8)資料排序

sort({"time":-1})或者sort({"time":1})

例:$db.collection.find({"plate":"陝A11111"},{"plate:1,"address":1,"time":1}).sort({"time":-1).limit(5)

解釋:

接(7),按照時間倒敘排列,返回車牌為陝A1111,指定欄位的5條記錄,其中sort方法中,-1表示倒排,如果設定為1,即表示按照時間正序排序

相當於sql:

sort({"time":-1}):按照時間倒敘

$select plate,address,time from collection where plate='陝A11111' order by time desc limit 5;

sort({"time":-1}):按照時間正序

$select plate,address,time from collection where plate='陝A11111' order by time limit 5;