2017-01-02 2 views
1

В настоящее время у меня есть данные, которые необходимо вставить в mongodb. Данные были успешно вставлены в mongodb, однако есть некоторое значение, которое я хотел бы добавить к данным и добавить в mongodb.Добавление значения в MongoDB с помощью NodeJS

Как я могу это сделать? Это мой код для inserting data в MongoDB

var MongoClient = require('mongodb').MongoClient 
 
    , format = require('util').format; 
 

 
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) { 
 
    if(err) throw err; 
 

 
    var collection = db.collection('test_insert'); 
 
    collection.insert({ values:parsestring() }, function(err, docs) { 
 
     collection.count(function(err, count) { 
 
      console.log(format("count = %s", count)); 
 
     }); 
 
    }); 
 

 
    // Locate all the entries using find 
 
    collection.find().toArray(function(err, results) { 
 
     console.dir(results); 
 
     // Let's close the db 
 
     db.close(); 
 
    }); 
 
}); 
 

 
// "1,61,54,87,20,12/3/2016,8:39AM" this default value 
 
function parsestring(str="1,30,40,50,20,10/10/2016,10:39AM") 
 
{ 
 
    return str.split(","); 
 
}

Я хотел бы добавить значение в текстовой строке.

Например: машина единица: 1,

Температура воздуха ° C: 30,

Температура воды ° C: 40,

Тепло Температура ° C: 50,

Температура в помещении ° C: 20,

Дата: 10/10/2016,

Время: 10:39

+0

It было бы лучше использовать модуль «ODM», такой как 'mongoose' –

+1

У вас уже есть комментарии по идентичному вопросу здесь: http://stackoverflow.com/questions/41390018/appending-text-string-to-mongodb-using- nodejs. Он по-прежнему выглядит подозрительно и добавляет данные в массив или лучше, чем объект рекомендуется вместо выполнения строковых манипуляций. – str

+0

@str, что кажется вам настолько подозрительным? это проект, который я предполагаю сделать. Что вы мне порекомендовали? Как я могу добавить данные в массив/объект? – Marcus

ответ

1

Как уже упоминалось в комментариях, вы должны хранить свои данные как объекты (или массивы). Строка str.split(",") уже возвращает вам массив, который вы храните. В вашем коде вы также получаете свои данные в виде массива. Когда вы выполните console.dir() свои результаты, вы можете сопоставить ваши результаты .entries с определенной выходной строкой, если хотите.

collection.find().toArray(function(err, results) { 
    console.dir(results); // <= results.entries 
    // Let's close the db 
    db.close(); 
}); 

Смотрите также: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/map & https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/entries

Однако, если вы хотите хранить объекты (например, для доступа к данным через идентификатор), вы могли бы просто сделать это нравится:

function parsestring(str="1,30,40,50,20,10/10/2016,10:39AM"){ 
    var dataArr = str.split(","); 
    var dbEntry = {}; 

    dbEntry.machine = dataArr[0]; 
    dbEntry.airTemp = dataArr[1]; 
    dbEntry.waterTemp = dataArr[2]; 
    dbEntry.heatTemp = dataArr[3]; 
    dbEntry.roomTemp = dataArr[4]; 
    dbEntry.date = dataArr[5]; 
    dbEntry.time = dataArr[6]; 

    return dbEntry; 
} 

Когда возвращение простого объекта из mongoDB, вам не понадобятся .toArray()

+0

Спасибо, код работает. Действительно ценю это – Marcus

Смежные вопросы