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可以查询指定长度的数组。