广告位联系
返回顶部
分享到

Mongodb UPDATE使用$sort将数组重新排序的示例代码

MongoDB 来源:互联网 作者:佚名 发布时间:2024-06-21 21:59:58 人浏览
摘要

本文继续探讨对文档数组类型字段进行更新。可以思考平时是否遇到这样的需求。数据插入数组字段后,需要对数组字段进行排序。比如找出昨天温度最高的几个城市,或者降水量最多的几个

本文继续探讨对文档数组类型字段进行更新。可以思考平时是否遇到这样的需求。数据插入数组字段后,需要对数组字段进行排序。比如找出昨天温度最高的几个城市,或者降水量最多的几个城市。或者成绩最高的几个同学。这里都需要使用到排序。Mongodb在$push操作中,提供了$sort数据修饰符,允许用户向数组插入元素后,对数组进行排序。

定义

$sort方法在$push操作过程中,修改数组元素的排序。$sort方法,必须和$each共同使用。mongodb允许用户传递一个空的数组给$each方法,保证用户无须向数组中插入元素也可以将数组进行排序。$sort方法,按照下面的形式来使用。

1

2

3

4

5

6

7

8

{

    $push: {

        <field>: {

            $each: [<value1>, <value2>, ...],

            $sort: <sort specification>

        }

    }

}

对于sort specification, 当对非文档数组进行排序,或对整个文档作为整体进行排序时,正序可以指定1, 倒序可以指定为-1.当对文档字段进行排序时,指定要排序的字段和排列顺序。不需要添加数组字段的字段名称。

行为

  • 自mongodb5.0开始,UPDATE操作按照字段名称的字典顺序更新字段。当字段中包含数字时,按照数字顺序依次更新字段。当然,对一个文档的多个字段操作,是原子性的。
  • $sort可以对数组中的文档进行排序。这种排序可以发生在整个文档或者文档的部分字段当中。
  • $sort方法必须和$each方法共同使用,否则报错

应用

对数组中的文档进行排序

向students集合中插入数据,其中quzzes是文档数组类型字段。

1

2

3

4

5

6

7

8

9

db.students.insertOne(

    {

        _id:1,

        quzzes: [

            {id:1, score:6},

            {id:2, score:9}

        ]

    }

)

构建更新语句,要求向quzzes插入数组元素,并按照score正序进行排序。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

db.students.updateOne(

    {_id:1},

    {

        $push: {

            quzzes: {

                $each: [

                    {id:3, score:8},

                    {id:4, score:7},

                    {id:5, score:6}

                ],

                $sort: {score:1}

            }

        }

    }

)

查看数据更新结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

db.students.find().pretty();

[

  {

    "_id": 1,

    "quzzes": [

      {

        "id": 1,

        "score": 6

      },

      {

        "id": 5,

        "score": 6

      },

      {

        "id": 4,

        "score": 7

      },

      {

        "id": 3,

        "score": 8

      },

      {

        "id": 2,

        "score": 9

      }

    ]

  }

]

使用$sort排列非文档数据类型。

向students集合插入数据。其中test字段是数值类型的数组。

1

2

3

4

5

6

db.students.insertOne({

    _id:2,

    tests: [

        89,70,89, 50

    ]

})

更新插入的数据, 要求插入新数据40, 60并对数组按照正序进行排序。

1

2

3

4

5

6

7

8

9

10

db.students.updateOne({

    _id:2

},{

    $push: {

        tests: {

            $each: [40, 60],

            $sort: 1

        }

    }

})

查看数据更新结果

1

2

3

4

5

6

7

8

9

10

11

12

db.students.find()

{

    "_id": 2,

    "tests": [

      40,

      50,

      60,

      70,

      89,

      89

    ]

  }

仅使用$sort对数组进行排序

向students集合插入数据,其中tests是数值类型的数组

1

2

3

db.students.insertOne({

    _id:3, tests: [89, 70, 100, 20]

})

修改新插入的文档,要求将tests字段按照倒序排序。

1

2

3

4

5

6

7

8

9

10

db.students.updateOne({

    _id:3

},{

    $push: {

        tests: {

            $each: [],

            $sort: -1

        }

    }

})

查看更新后的结果

{
    "_id": 3,
    "tests": [
      100,
      89,
      70,
      20
    ]
  }


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • MongoDB分页查询缓慢怎么办

    MongoDB分页查询缓慢怎么办
    在大数据应用场景中,MongoDB作为一种NoSQL数据库,以其灵活的文档存储模式和高性能查询能力,得到了广泛应用。然而,随着数据规模的不
  • Mongodb UPDATE使用$sort将数组重新排序的示例代码
    本文继续探讨对文档数组类型字段进行更新。可以思考平时是否遇到这样的需求。数据插入数组字段后,需要对数组字段进行排序。比如找
  • springboot整合mongodb的介绍

    springboot整合mongodb的介绍
    1.mongodb的安装和简介 1.1简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点
  • MongoDB数据库性能监控介绍

    MongoDB数据库性能监控介绍
    一、MongoDB启动超慢 1、启动日常卡住,根本不用为了截屏而快速操作,MongoDB启动真的超级慢~~ 2、启动MongoDB配置服务器,间歇性失败。 3、查
  • 详细介绍如何更新MongoDB文档的_id
    您无法更新它,但可以保存新 ID 并删除旧 ID。请按照一些步骤更新 MongoDB 的 _id。步骤如下: 第1步:第一步,需要将ObjectId存储到变量中。
  • MongoDB实现创建删除数据库、创建删除表(集合

    MongoDB实现创建删除数据库、创建删除表(集合
    一、 数据库使用 开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 1 mongod --dbpath c:\mongodb 管理 mongodb 数据库:(一定要在新
  • MongoDB数据库基本概念介绍

    MongoDB数据库基本概念介绍
    不管我们要学习什么数据库,都应该学习其中的基础概念,在MongoDB中基本的概念是文档、集合、数据库,下面挨个介绍。 下面的表格将会帮
  • MongoDB连接和创建数据库的方法

    MongoDB连接和创建数据库的方法
    一、连接MongoDB 在连接MongoDB前确保启动MongoDB服务,只需要在MongoDB安装目录的bin目录下执行mongo.exe即可。 执行启动操作后,mongodb在输出一些
  • 使用MongoDB操作文档

    使用MongoDB操作文档
    本篇文章中将讲解如何使用MongoDB操作文档。 文档的数据结构和JSON基本一致,所有存储在集合中的数据都是BSON格式。BSON是一种类似json格式
  • Laravel框架中使用MongoDB数据库的操作

    Laravel框架中使用MongoDB数据库的操作
    1、先确定好自己使用的哪个版本的 Laravel 框架,再决定 composer 哪一个的 MongoDB,我使用的是 Laravel 8 所以我 composer 了 3.8 的MongoDb 2、执行
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计