【发布时间】:2016-02-24 21:38:48
【问题描述】:
我有以下代码可以找到任何缺少 DateUTC 的文档,并使用文档中包含的日期字符串值循环并设置日期。数据通过 JSON 文件导入,因此需要将日期转换为 UTC 日期。但是,当有> 1000条记录时,我会得到“内存不足”。这些文档是相当大的 JSON 天气读数。我是 MongoDb 和 Node 的新手,但要更新的数据并不多,所以我认为我做错了。
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var db = mongoose.connection;
var Grib = require('./models/grib.js');
var fs = require('fs');
var moment = require('moment');
//register call back events
db.on('error', console.error);
db.once('open', function () {
//do our DB work here
var today = moment().startOf('day');
var tomorrow = moment(today).add(1, 'day');
var yesterday = moment(today).add(-1, 'day');
Grib.find({ 'header.dateUTC': null }, {}, {}, function (err, array) {
for (var i = 0, len = array.length; i < len; i++) {
array[i].header.dateUTC = moment.utc(array[i].header.refTime).toDate();
array[i].save(function (err) {
if (err) console.log('save error:' + err);
});
};
console.log('Number of grib dates updated:' + array.length);
});
【问题讨论】:
-
array[i].header.refTime的类型是什么?如果已经是日期,则无需获取所有文档来逐一更新。
标签: json node.js mongodb mongoose