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可以查詢指定長度的陣列。