MongoDB 如何将字符串类型的日期 yyyy-m-d 更新为 yyyy-mm-dd

标签 mongodb

<分区>

在我的 mongoDB 中,我有 10,000 行,如下所示:

{ "_id" : ObjectId("5a037d23f535be649b3ffb64"), "userName" : "drusso", "PRGroup" : "lbs", "PRType" : "Front squat", "PRValue" : "190", "PRDate" : "2017-6-8" }

但在我的查询中,我需要对 PRDate 字段进行排序,当日期为 2 位数月份时,该字段不起作用,因为它们存储为字符串。所以我需要一种方法将所有行更新为 yyyy-mm-dd 以便排序查询有效。

我不太了解 mongo 查询结构,所以我正在寻求帮助。提前感谢 mucho gracias。

最佳答案

我在 MongoDB shell 版本 v3.4.9 中尝试过此方法,希望它也适用于您。 只需将 so 替换为您的收藏名称即可。

db.so.find().snapshot().forEach(function(e){

    if(e.PRDate.length < 10)
    {
        var tokens = e.PRDate.split("-");
        if(tokens.length == 3)
        {
            var year = tokens[0];
            var month = tokens[1];
            var day = tokens[2];

            if(month.length == 1)
            {
                month = "0" + month;
            }
            if(day.length == 1)
            {
                day = "0" + day;
            }
            e.PRDate = year + "-" + month + "-" + day;
            db.so.save(e);
        }
    }
});

关于MongoDB 如何将字符串类型的日期 yyyy-m-d 更新为 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47212725/

相关文章:

mongodb - $lookup 区分大小写的字段

javascript - MongoDB findOne() 用于从数据库检索

mongodb - mongo - cli 因 Failed to mlock : Cannot allocate locked memory 而下降

mongodb - 自定义函数计算列mongodb投影

java - 何时使用 MongoDB Driver/Morphia 而不是 Hibernate

mongodb - 从Hive向MongoDB转储数据时出错

node.js - 在 Mongodb 中搜索,从 API 传递变量(搜索词)

mongodb - Go - mgo,从集合中检索所有嵌套字段

node.js - Mongoose - 可能的循环依赖?

javascript - Meteor - 集合未保存到指定的 Mongo URL