mongodb查询、索引、排序

MongoDB 查询文档

MongoDB 查询文档使用 find() 方法。
find() 方法以非结构化的方式来显示所有文档
MongoDB 查询数据的语法格式如下:

db.collection.find(query, projection)

query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

>db.col.find().pretty()

pretty() 方法以格式化的方式来显示所有文档
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档

**MongoDB条件语句查询 **
通过下表可以更好的理解 MongoDB 的条件语句查询:

操作 格式 范例
等于 {:} db.col.find({“by”:“教程”}).pretty()
小于 {:{$lt:}} db.col.find({“likes”:{$lt:50}}).pretty()
小于或等于 {:{$lte:}} db.col.find({“likes”:{$lte:50}}).pretty()
大于 {:{$gt:}} db.col.find({“likes”:{$gt:50}}).pretty()
大于或等于 {:{$gte:}} db.col.find({“likes”:{$gte:50}}).pretty()
不等于 {:{$ne:}} db.col.find({“likes”:{$ne:50}}).pretty()

MongoDB AND 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

db.test.insert({
    "name" : "zs", "age" : 16 })
db.test.insert({
    "name" : "lis", "age" : 17 })
db.test.insert({
    "name" : "ww", "age" : 18 })
db.test.insert({
    "name" : "zhaol", "age" : 19 })
db.test.insert({
    "name" : "zheng", "age" : 20 })
db.test.insert({
    "name" : "zhou", "age" : 20 })
db.test.insert({
    "name" : "wl", "age" : 21 })
db.test.insert({
    "name" : "zs", "age" : 20 })
db.test.insert({
    "name" : "zs", "age" : 25 })
db.test.insert({
    "name" : "ll", "age" : 25 })
db.test.insert({
    "name" : "zhou", "age" : 25 })

> db.test.find({
   $and:[{
   name:"lis"},{
   age:17}]})
{
    "_id" : ObjectId("606832fa26baee6450dedf8c"), "name" : "lis", "age" : 17 }

MongoDB OR 条件

MongoDB OR 条件语句使用了关键字 $or

> db.test.find({
   $or:[{
   "name":"lis"},{
   "age":16}]})
{
    "_id" : ObjectId("606832eb26baee6450dedf8b"), "name" : "zs", "age" : 16 }
{
    "_id" : ObjectId("606832fa26baee6450dedf8c"), "name" : "lis", "age" : 17 }

AND 和 OR 联合使用

这里我们找到zhou 20岁和zs 20岁的连个人显示出来

> db.test.find({
   $and:[{
   age:20,$or:[{
   name:"zs"},{
   name:"zhou"}]}]})
{
    "_id" : ObjectId("6068334726baee6450dedf90"), "name" : "zhou", "age" : 20 }
{
    "_id" : ObjectId("6068334726baee6450dedf92"), "name" : "zs", "age" : 20 }

如果后面加{_id:0}就不会显示_id,方便查看
如果换成{_id:1}就会只显示_id

> db.test.find({
   $and:[{
   age:20,$or:[{
   name:"zs"},{
   name:"zhou"}]}]},{
   _id:0})
{
    "name" : "zhou", "age" : 20 }
{
    "name" : "zs", "age" : 20 }

> db.test.find({
   $and:[{
   age:20,$or:[{
   name:"zs"},{
   name:"zhou"}]}]},{
   _id:1})
{
    "_id" : ObjectId("6068334726baee6450dedf90") }
{
    "_id" : ObjectId("6068334726baee6450dedf92") }

MongoDB 排序

MongoDB sort() 方法

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

> db.test.find().sort({
   age:1})
{
    "_id" : ObjectId("606832eb26baee6450dedf8b"), "name" : "zs", "age" : 16 }
{
    "_id" : ObjectId("606832fa26baee6450dedf8c"), "name" : "lis", "age" : 17 }
{
    "_id" : ObjectId("6068334726baee6450dedf8d"), "name" : "ww", "age" : 18 }
{
    "_id" : ObjectId("6068334726baee6450dedf8e"), "name" : "zhaol", "age" : 19 }
{
    "_id" : ObjectId("6068334726baee6450dedf8f"), "name" : "zheng", "age" : 20 }
{
    "_id" : ObjectId("6068334726baee6450dedf90"), "name" : "zhou", "age" : 20 }
{
    "_id" : ObjectId("6068334726baee6450dedf92"), "name" : "zs", "age" : 20 }
{
    "_id" : ObjectId("6068334726baee6450dedf91"), "name" : "wl", "age" : 21 }
{
    "_id" : ObjectId("6068334726baee6450dedf93"), "name" : "zs", "age" : 25 }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值