MongoDB日期对象中的更新时间(不是日期)

时间:2017-04-15 19:26:35

标签: mongodb

是否可以在不重新计算整个日期的情况下更新mongo文档上日期条目的小时数?

这是我的架构:

book = {
    name: String,
    release: Date
}

以下是一些文件:

{name:"book1", release: ISODate("2016-05-18T16:00:00Z")}
{name:"book1", release: ISODate("2016-05-17T17:00:00Z")}
{name:"book1", release: ISODate("2016-03-12T01:00:00Z")}

等等。

如您所见,图书的营业时间为16:00,17:00和01:00。

我想将所有时间设置为00:00,同时保持实际的日,月和年不变

这可能吗?

1 个答案:

答案 0 :(得分:1)

这是一个mongo shell脚本,它将小时设置为00本地时间,请记住它将以UTC时间存储它,这可能与当地时间不同。

var collection = db.YOUR_COLLECTION;
var allBooks = collection.find().toArray();

allBooks.forEach(function(book){
  var updatedDate = new Date(book.release.setHours(0))
  collection.update({_id: book._id}, {release: updatedDate})
});

n.b。我在Studio 3T(以前的Mongo Chef)中运行了这个

进一步阅读: