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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值