1. 程式人生 > >MongoDB中的資料查詢

MongoDB中的資料查詢

MongoDB中的查詢大致上分為以下五種:

一、操作符查詢:

MongoDB中的操作符查詢,其與RDBMS Where中的語句比較是這樣的:


例如:

db.demo.find({"score" : {$gt : 85}})

其意思是查詢資料庫中成績大於85分的資訊,其等效於MySQL資料庫中的下面的sql語句:

select * fom demo where score>85

二、根據資料型別來進行查詢,由於其key都是固定的“$type”,因而也被稱為“$type”操作符查詢。

MongoDB 中可以使用的型別如下表所示:


比如說查詢String型別的資料,語句如下:

db.demo.find({'title':{$type:2}})

三、正則表示式查詢

正則表示式的API如下:

非列印字元:


特殊字元:


限定符:


定位符:


示例語句如下:

db.col.find({'title':{$regex:'^J'}})

其意思是查詢title欄位中以J字母開頭的資訊。

四、全文索引

建立全文索引

建立語句如下:

db.demo.ensureIndex({title:'text'})

其中title是被索引的欄位。

查詢全文索引

db.demo.getIndexes()

刪除全文索引

db.demo.dropIndex('title_text')

這裡需要注意的是,刪除索引欄位的時候傳入的引數並不是被索引的欄位,而是索引的name,如下:

[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "col.col"
        },
        {
                "v" : 1,
                "key" : {
                        "_fts" : "text",
                        "_ftsx" : 1
                },
                "name" : "title_text",
                "ns" : "col.col",
                "weights" : {
                        "title" : 1
                },
                "default_language" : "english",
                "language_override" : "language",
                "textIndexVersion" : 2
        }
]

此時的name指的是title_text,而不是title。

根據索引查詢資訊

db.demo.find({$text:{$search:'PHP'}})

五、關鍵字查詢

and條件查詢

MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,相當於常規的 SQL 中的 AND 條件。

db.col.find({key1:value1, key2:value2}).pretty()

or條件查詢

MongoDB OR 條件語句使用了關鍵字 $or,語法格式如下:
>db.col.find(
   {
      $or: [
    {key1: value1}, {key2:value2}
      ]
   }
).pretty()

除此之外還有:

$in:查詢在指定陣列範圍之內的文件

比如說查詢成績在60-85之間的資訊,語句如下:

db.demo.find({'score':{'$in':[60,85]}})

$nin:返回與指定陣列中所有條件都不匹配的文件

比如說查詢成績不在60-85之間的資訊,語句如下:

db.demo.find({'score':{'$nin':[60,85]}})

$not可以用在任何條件之上

 例如:

db.demo.find({"id":{"$not":{"score":[60,85]}}})

上面的語句作用等效於$nin。

除了上面的之外還有:$all用於多元素匹配陣列,$size可以查詢指定長度的陣列。