参考其当前值更新mongodb中所有文档的特定字段

时间:2018-09-23 07:27:44

标签: mongodb mongodb-query aggregation-framework

在我的mongodb集合中,所有具有“ TimeStamp”字段的“ MM-DD-YYYY”格式的文档都存储为字符串。我想将所有文档中的退出时间戳字段更新为“ DD-MM-YYYY”格式。谁能帮我写一个查询。

示例我的文档如下

{
  "id" : "1",
  "TimeStamp" : "09-22-2018"
},
{
  "id" : "2",
  "TimeStamp" : "09-23-2018"
}

我想将它们更新为

{
  "id" : "1",
  "TimeStamp" : "22-09-2018"
},
{
  "id" : "2",
  "TimeStamp" : "23-09-2018"
}

2 个答案:

答案 0 :(得分:1)

您可以遍历所有文档并重新格式化TimeStamp,如下所示:

function reformat(date) { 
  var parts = date.split('-'); 
  return parts[1]+'-'+parts[0]+'-'+parts[2]; 
}

db.collection.find({TimeStamp : {$exists: true}}).snapshot().forEach(
 function (doc) { 
   db.collection.update( 
     { _id: doc._id }, 
     { $set: { TimeStamp: reformat(doc.TimeStamp) }}
   ); 
 }
);

答案 1 :(得分:0)

您可以尝试以下$out聚合

SecurityConfig