mongodb基本查詢語句

2021-07-31 06:23:06 字數 2702 閱讀 3333

1.  基本查詢:

構造查詢資料。

> db.test.findone()

--多條件查詢。下面的示例等同於sql語句的where name = "stephen" and age = 35

> db.test.find()

--返回指定的文件鍵值對。下面的示例將只是返回name和age鍵值對。

> db.test.find({}, )

--指定不返回的文件鍵值對。下面的示例將返回除name之外的所有鍵值對。

> db.test.find({}, )

2.  查詢條件:

mongodb提供了一組比較操作符:$lt/$lte/$gt/$gte/$ne,依次等價於/>=/!=。

--下面的示例返回符合條件age >= 18 && age <= 40的文件。

> db.test.find(})

--下面的示例返回條件符合name != "stephen1"

> db.test.find(})

--$in等同於sql中的in,下面的示例等同於sql中的in ("stephen","stephen1")

> db.test.find(})

--和sql不同的是,mongodb的in list中的資料可以是不同型別。這種情況可用於不同型別的別名場景。

> db.test.find(})

--$nin等同於sql中的not in,同時也是$in的取反。如:

> db.test.find(})

--$or等同於sql中的or,$or所針對的條件被放到乙個陣列中,每個陣列元素表示or的乙個條件。

--下面的示例等同於name = "stephen1" or age = 35

> db.test.find(, ]})

--下面的示例演示了如何混合使用$or和$in。

> db.test.find(}, ]})

--$not表示取反,等同於sql中的not。

> db.test.find(}})

3.  null資料型別的查詢:

--在進行值為null資料的查詢時,所有值為null,以及不包含指定鍵的文件均會被檢索出來。

> db.test.find()

--需要將null作為陣列中的乙個元素進行相等性判斷,即便這個陣列中只有乙個元素。

--再有就是通過$exists判斷指定鍵是否存在。

> db.test.find(})

4.  正則查詢:

--mongodb中使用了perl規則的正則語法。如:

> db.test.find()

--i表示忽略大小寫

> db.test.find()

5.  陣列資料查詢:

--基於陣列的查詢。

--為後面的實驗構造資料。

--為後面的示例構造測試資料。

> db.test.find()

, "age" : 45 }

--當嵌入式文件為陣列時,需要$elemmatch操作符來幫助定位某乙個元素匹配的情況,否則嵌入式檔案將進行全部的匹配。

--即檢索時需要將所有元素都列出來作為查詢條件方可。

> db.test.findone(),]

}> db.test.find(}}}

, ] }

7.  游標:

資料庫使用游標來返回find()的執行結果,客戶端對游標可以進行有效的控制,如:限定結果集的數量、跳過部分結果、基於任意鍵的任意方向的排序等。

下面的例子將用於準備測試資料。

> db.testtable.remove()

> for (i = 0; i < 10; ++i) )

... }

我們可以通過cursor提供的hasnext()方法判斷是否還有未讀取的資料,再通過next()方法讀取結果集中的下乙個文件。如:

> var c = db.testtable.find()

> while (c.hasnext()) 01

2345

6789

當呼叫find()的時候,shell並不立即查詢資料庫,而是等待真正開始要求獲得結果的時候才傳送查詢,這樣在執行之前可以給查詢附加額外的選項。幾乎所有的游標方法都返回本身,因此可以像下面這樣將游標的方法鏈式組合起來。如:

> var c1 = db.testtable.find().sort().limit(1).skip(4);

> var c2 = db.testtable.find().limit(1).sort().skip(4);

> var c3 = db.testtable.find().skip(4).limit(1).sort();

此時,查詢並未執行,所有這些函式都是在構造查詢,當執行下面的語句時,查詢將被真正執行,

> c.hasnext()

查詢被傳送到伺服器,mongodb伺服器每次將返回一批資料,當本批被全部迭代後再從伺服器讀取下一批資料,直至查詢結果需要的資料被全部迭代。

對於上面的示例,limit(1)表示輸出結果僅為乙個,如果小於1,則不輸出,即limit(n)函式限定的是最多輸出結果。skip(4)表示跳過查詢結果中的前4個文件,如果結果小於4,則不會返回任何文件。sort()用於設定排序條件,即按照x鍵以公升序(1)的方式排序,如果需要降序排序可以改為:sort()。sort也可以支援多鍵排序,如:sort()即先按照username進行公升序排序,如果username的值相同,再以age鍵進行降序排序。這裡需要指出的是,如果skip過多的文件,將會導致效能問題。 

mongodb查詢語句

1.基本查詢 構造查詢資料。db.test.findone 多條件查詢。下面的示例等同於sql語句的where name stephen and age 35 db.test.find 返回指定的文件鍵值對。下面的示例將只是返回name和age鍵值對。db.test.find 指定不返回的文件鍵值對...

MongoDB基本操作語句

mongo ip port use admin db.auth admin password mongodb 建立資料庫的語法格式如下 use database name如果資料庫不存在,則建立資料庫,否則切換到指定資料庫。以下例項我們建立了資料庫 testdb mongos use testdb ...

mongoDB簡單的查詢語句

mongodb沒有建立資料庫的命令,但有類似的命令。如 如果你想建立乙個 mytest 的資料庫,先執行use mytest命令,之後就做一些操作 如 db.createcollection user 這樣就可以建立乙個名叫 mytest 的資料庫。db.mhouseonedetail.find 查...