MongoDB 介绍 - 运算符

发布日期:2026-06-25 06:06:03   来源 : 杭州电子商务研究院    浏览量 :19
杭州电子商务研究院 发布日期:2026-06-25 06:06:03  
19

开始设置

请阅读本系列的第一本指南,了解有关 MongoDB安装、Shell 和数据库管理的更多信息。

运算符

MongoDB 中有四种主要类型的运算符。它们是:

  • 查询和投影运算符
    - 查询运算符提供在数据库中定位数据的方法。
    - 投影运算符修改数据的呈现方式。
  • 更新运算符
    - 更新运算符是使您能够修改数据库中的数据或添加其他数据的操作符。
  • 聚合管道操作符
    - 聚合管道操作有一组可用的操作符,可用于定义和操作管道阶段中的文档。
  • 查询修饰符
    - 查询修饰符决定查询的执行方式。

在本指南中,我们将仅研究几个运算符。要比较运算符,我们需要在记录中添加更多字段。首先添加一些记录,稍后我们将删除它们。

      db.students.insert([
  { name: "Bebo", age: 5 },
  { name: "Chinna", age: 10 },
  { name: "Elukaludha", age: 15 },
  { name: "Kaalejoo", age: 20 },
  { name: "Vela Thedoo", age: 25 },
  { name: "Kanna Lammoo", age: 30 },
  { name: "Daydee", age: 40 },
  { name: "Paati", age: 55 },
  { name: "Thathaa", age: 60 }
]);
    

执行上述命令后,我们收到以下成功消息:

      > db.students.insert([
...   {"name": "Bebo", "age": 5},
...   {"name": "Chinna", "age": 10},
...   {"name": "Elukaludha", "age": 15},
...   {"name": "Kaalejoo", "age": 20},
...   {"name": "Vela Thedoo", "age": 25},
...   {"name": "Kanna Lammoo", "age": 30},
...   {"name": "Daydee", "age": 40},
...   {"name": "Paati", "age": 55},
...   {"name": "Thathaa", "age": 60}
... ]);
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 9,
    "nUpserted" : 0,
    "nMatched" : 0,
    "nModified" : 0,
    "nRemoved" : 0,
    "upserted" : [ ]
})
> db.students.find();
{ "_id" : ObjectId("593142968e61243307417cd2"), "name" : "Bebo", "age" : 5 }
{ "_id" : ObjectId("593142968e61243307417cd3"), "name" : "Chinna", "age" : 10 }
{ "_id" : ObjectId("593142968e61243307417cd4"), "name" : "Elukaludha", "age" : 15 }
{ "_id" : ObjectId("593142968e61243307417cd5"), "name" : "Kaalejoo", "age" : 20 }
{ "_id" : ObjectId("593142968e61243307417cd6"), "name" : "Vela Thedoo", "age" : 25 }
{ "_id" : ObjectId("593142968e61243307417cd7"), "name" : "Kanna Lammoo", "age" : 30 }
{ "_id" : ObjectId("593142968e61243307417cd8"), "name" : "Daydee", "age" : 40 }
{ "_id" : ObjectId("593142968e61243307417cd9"), "name" : "Paati", "age" : 55 }
{ "_id" : ObjectId("593142968e61243307417cda"), "name" : "Thathaa", "age" : 60 }
>
    

注意:在之前的输出中,其他记录被有意隐藏了。

现在我们有了一些带有年龄的姓名。让我们尝试找出年龄超过 18 岁的人。命令和查询如下:

      db.students.find({
  age: {
    $gt: 18
  }
});
    

通过上述命令,我们得到了年龄在 18 岁以上的学生名单。

      > db.students.find({"age": {$gt: 18}});
{ "_id" : ObjectId("593142968e61243307417cd5"), "name" : "Kaalejoo", "age" : 20 }
{ "_id" : ObjectId("593142968e61243307417cd6"), "name" : "Vela Thedoo", "age" : 25 }
{ "_id" : ObjectId("593142968e61243307417cd7"), "name" : "Kanna Lammoo", "age" : 30 }
{ "_id" : ObjectId("593142968e61243307417cd8"), "name" : "Daydee", "age" : 40 }
{ "_id" : ObjectId("593142968e61243307417cd9"), "name" : "Paati", "age" : 55 }
{ "_id" : ObjectId("593142968e61243307417cda"), "name" : "Thathaa", "age" : 60 }
>
    

其他类似的命令有$gte$lt$lte$eq$ne$in$nin。有关这些命令的更多信息,请参见此处

排序

如果没有排序,数据库管理系统会是什么样子?要进行排序,我们将在任何游标( find()操作和类似操作的结果)上使用sort()函数。sort ()函数接受一个对象参数,它以字段名称作为键,值为1-1,其中它们为升序或降序。让我们尝试按学生姓名对其进行排序。命令如下:

      db.students.find().sort({
  name: 1
});
    

执行上述操作后,我们就把所有事情都整理好了。

      > db.students.find().sort({
...   "name": 1
... });
{ "_id" : ObjectId("593142968e61243307417cd2"), "name" : "Bebo", "age" : 5 }
{ "_id" : ObjectId("593142968e61243307417cd3"), "name" : "Chinna", "age" : 10 }
{ "_id" : ObjectId("593142968e61243307417cd8"), "name" : "Daydee", "age" : 40 }
{ "_id" : ObjectId("593142968e61243307417cd4"), "name" : "Elukaludha", "age" : 15 }
{ "_id" : ObjectId("593142968e61243307417cd5"), "name" : "Kaalejoo", "age" : 20 }
{ "_id" : ObjectId("593142968e61243307417cd7"), "name" : "Kanna Lammoo", "age" : 30 }
{ "_id" : ObjectId("593142968e61243307417cd9"), "name" : "Paati", "age" : 55 }
{ "_id" : ObjectId("593142968e61243307417cda"), "name" : "Thathaa", "age" : 60 }
{ "_id" : ObjectId("593142968e61243307417cd6"), "name" : "Vela Thedoo", "age" : 25 }
>
    

我们也按降序排序:

      > db.students.find().sort({   "name": -1 });
{ "_id" : ObjectId("593142968e61243307417cd6"), "name" : "Vela Thedoo", "age" : 25 }
{ "_id" : ObjectId("593142968e61243307417cda"), "name" : "Thathaa", "age" : 60 }
{ "_id" : ObjectId("593142968e61243307417cd9"), "name" : "Paati", "age" : 55 }
{ "_id" : ObjectId("593142968e61243307417cd7"), "name" : "Kanna Lammoo", "age" : 30 }
{ "_id" : ObjectId("593142968e61243307417cd5"), "name" : "Kaalejoo", "age" : 20 }
{ "_id" : ObjectId("593142968e61243307417cd4"), "name" : "Elukaludha", "age" : 15 }
{ "_id" : ObjectId("593142968e61243307417cd8"), "name" : "Daydee", "age" : 40 }
{ "_id" : ObjectId("593142968e61243307417cd3"), "name" : "Chinna", "age" : 10 }
{ "_id" : ObjectId("593142968e61243307417cd2"), "name" : "Bebo", "age" : 5 }
>
    

天哪!两者都运行完美。

限制结果

在上一个示例中,我们可以根据年龄对学生进行降序或升序排序。如果我们需要找出该组中年龄最大的学生,我们只需根据他们的年龄进行降序排序,然后将结果限制为一名学生。

与传统 RDB 中的聚合函数类似,MongoDB 有一个名为limit()的函数,可用于find()结果(又称游标)。

limit ()函数接受一个参数,即限制结果数量的整数值。在我们的例子中,该参数为1

      db.students
  .find()
  .sort({
    age: -1
  })
  .limit(1);
    

啊,我们来了。我们的高年级学生只有Thatha 。

      > d
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据