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

 更新时间:2024年06月21日 10:55:42   作者:威赞  
$sort方法在$push操作过程中,修改数组元素的排序,$sort方法,必须和$each共同使用,mongodb允许用户传递一个空的数组给$each方法,保证用户无须向数组中插入元素也可以将数组进行排序,本文给大家介绍了Mongodb UPDATE使用$sort将数组重新排序,需要的朋友可以参考下

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

定义

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

{
    $push: {
        <field>: {
            $each: [<value1>, <value2>, ...],
            $sort: <sort specification>
        }
    }
}

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

行为

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

应用

对数组中的文档进行排序

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

db.students.insertOne(
    {
        _id:1,
        quzzes: [
            {id:1, score:6},
            {id:2, score:9}
        ]
    }
)

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

db.students.updateOne(
    {_id:1},
    {
        $push: {
            quzzes: {
                $each: [
                    {id:3, score:8},
                    {id:4, score:7},
                    {id:5, score:6}
                ],
                $sort: {score:1}
            }
        }
    }
)

查看数据更新结果

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字段是数值类型的数组。

db.students.insertOne({
    _id:2,
    tests: [
        89,70,89, 50
    ]
})

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

db.students.updateOne({
    _id:2
},{
    $push: {
        tests: {
            $each: [40, 60],
            $sort: 1
        }
    }
})

查看数据更新结果

db.students.find()
{
    "_id": 2,
    "tests": [
      40,
      50,
      60,
      70,
      89,
      89
    ]
  }

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

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

db.students.insertOne({
    _id:3, tests: [89, 70, 100, 20]
})

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

db.students.updateOne({
    _id:3
},{
    $push: {
        tests: {
            $each: [],
            $sort: -1
        }
    }
})

查看更新后的结果

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

以上就是Mongodb UPDATE使用$sort将数组重新排序的示例代码的详细内容,更多关于Mongodb $sort数组重新排序的资料请关注脚本之家其它相关文章!

相关文章

  • MongoDB常用命令小结

    MongoDB常用命令小结

    这篇文章主要介绍了MongoDB的一些常用命令,学习与使用MongoDB数据库的朋友可以参考下
    2013-08-08
  • 详解MongoDB范围片键和哈希片键

    详解MongoDB范围片键和哈希片键

    这篇文章主要介绍了MongoDB范围片键和哈希片键的相关资料,帮助大家更好的理解和学习使用MongoDB,感兴趣的朋友可以了解下
    2021-03-03
  • mongodb exception: $concat only supports strings, not NumberInt32解决办法

    mongodb exception: $concat only supports strings, not Number

    这篇文章主要介绍了mongodb exception: $concat only supports strings, not NumberInt32解决办法,需要的朋友可以参考下
    2014-06-06
  • MongoDB数据备份迁移的全过程

    MongoDB数据备份迁移的全过程

    这篇文章主要记录了MongoDB数据备份迁移的全过程,文中通过图文结合的方式介绍的非常详细,对大家了解学习MongoDB数据备份迁移有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • SpringBoot+MongoDB实现物流订单系统的代码

    SpringBoot+MongoDB实现物流订单系统的代码

    这篇文章主要介绍了SpringBoot+MongoDB实现物流订单系统的代码,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Mongodb 删除集合数据后释放磁盘空间的操作步骤

    Mongodb 删除集合数据后释放磁盘空间的操作步骤

    Mongodb当集合数据占用比较多,对其进行清理后,集合存储空间下降,但磁盘空间并没释放,对于具有活动更新的集合来说,有一些可重用的空间是正常的,过多的可重用空间通常是删除大量数据的结果,这篇文章主要介绍了Mongodb 删除集合数据后如何释放磁盘空间,需要的朋友可以参考下
    2023-11-11
  • 深入了解MongoDB是如何存储数据的

    深入了解MongoDB是如何存储数据的

    MongoDB是一个可扩展、高性能的分布式文档存储数据库,由C 语言编写,下面这篇文章主要给大家介绍了关于MongoDB是如何存储数据的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Mongodb中MapReduce实现数据聚合方法详解

    Mongodb中MapReduce实现数据聚合方法详解

    Mongodb是针对大数据量环境下诞生的用于保存大数据量的非关系型数据库,针对大量的数据。接下来通过本文给大家介绍Mongodb中MapReduce实现数据聚合方法详解,感兴趣的朋友一起学习吧
    2016-05-05
  • 关于MongoDB谨防索引seek的效率问题详析

    关于MongoDB谨防索引seek的效率问题详析

    这篇文章主要给大家介绍了关于MongoDB谨防索引seek的效率问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • windows与mac安装mongodb数据库的方法步骤与注意事项

    windows与mac安装mongodb数据库的方法步骤与注意事项

    今天小编就为大家分享一篇关于windows与mac安装mongodb数据库的方法步骤与注意事项,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论