在我的 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);
}
}
});