简体   繁体   English

将数据插入 mongodb 集合

[英]Insert data into mongodb collection

I want to insert data for whole current month ie November every day of this month and every hour of each day and every minute of each hour and every second of each minute.我想插入整个当前November的数据,即本月的每一天和每一天的每一个小时以及每一小时的每一分钟和每一分钟的每一秒。 I tried the following code which I tried for one day.我尝试了以下代码,我尝试了一天。

const data = [
    {
      'name': 'Name 10'
    }, {
      'name': 'Name 9'
    }, {
      'name': 'Name 8'
    }, {
      'name': 'Name 7'
    }, {
      'name': 'Name 6'
    }, {
      'name': 'Name 5'
    }, {
      'name': 'Name 4'
    },
    {
      'name': 'Name 3'
    },
    {
      'name': 'Name 2'
    },
    {
      'name': 'Name 1'
    }
];

const HOURS = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24];
const MINUTES = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59];
    for (let i = 0; i < data.length; i++) {
        for (let h = 0; h < HOURS.length; h++) {
            const hour = new Date().setHours(HOURS[h]);
            for (let m = 0; m < MINUTES.length; m++) {
                const n = data[i].name;
                const value =  Math.floor(Math.random() * (10 - 0 + 1)) + 0;
                const timestamp = new Date(hour).setMinutes(MINUTES[m]);
                new MongoCollection({ 'name': n, 'value': value, 'timestamp': timestamp }).save();
            }
        }       
    }

Any help would be appreciated.任何帮助,将不胜感激。

Why do you create arrays and use HOURS.length and MINUTES.length ?为什么要创建 arrays 并使用HOURS.lengthMINUTES.length for (let h = 0; h < 24; h++) and for (let m = 0; m < 60; m++) does the same. for (let h = 0; h < 24; h++)for (let m = 0; m < 60; m++)也是如此。

What is the purpose of - 0 and + 0 ? - 0+ 0的目的是什么?

Inserting the documents one-by-one will let to serious performance issues.一个接一个地插入文档会导致严重的性能问题。

Anyway, I would suggest moment.js library, would be similar to this.无论如何,我会建议moment.js库,与此类似。

for (let d of data) {
   var startTime = moment().startOf('month');
   var endTime = moment().endOf('month');
   var docs = [];
   while (startTime.isBeforeOrSame(endTime)) {
      docs.push({ 
          name: d.name, 
          value: Math.floor(Math.random() * 11), 
          timestamp: startTime.toDate() 
      });
      startTime.add(1, 'second');
   }
   db.collection.insertMany(docs);
}

Or maybe put array docs even at top level.或者甚至可以将数组docs放在顶层。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM