Использование регулярных выражений для получения нескольких данных из Mongodb - PullRequest
0 голосов
/ 13 июня 2018

Я новичок в Mongodb

Вот что я пробовал.Однако этот метод работал для меня, но его путь медленный.Можно ли спроектировать один запрос, чтобы получить все эти данные.вместо того, чтобы запрашивать по одному.

 var Schema = mongoose.Schema;// Schema
 var dataModelSchema = new Schema({
data: String,
});

var fdevices = mongoose.model('fdevices', dataModelSchema);
var DPMPow = fdevices.findOne({ "Data": { $regex: /DPMPow_P01/i } }).sort({ 
field: 'asc', _id: -1 }); //Active Power 
var DPMAmp = fdevices.findOne({ "Data": { $regex: /DPMAmp_P01/i } }).sort({ 
field: 'asc', _id: -1 });//Total Current
var DPMkWh = fdevices.findOne({ "Data": { $regex: /DPMkWh_P01/i } }).sort({ 
field: 'asc', _id: -1 });//Consumption
var MxPeak = fdevices.findOne({ "Data": { $regex: /MxPeak_P01/i } }).sort({ 
field: 'asc', _id: -1 });//Max Demand Peak
var MPPeak = fdevices.findOne({ "Data": { $regex: /MPPeak_P01/i } }).sort({ 
field: 'asc', _id: -1 });//Max Demand Partial

   async.series([
    function (callback) {
        DPMPow.exec(function (err, res) {
            callback(null, res);
        })
    },
    function (callback) {
        DPMAmp.exec(function (err, res) {
            callback(null, res);
        });
    },
    function (callback) {
        DPMkWh.exec(function (err, res) {
            callback(null, res);
        })

    },
    function (callback) {
        MxPeak.exec(function (err, res) {
            callback(null, res);
        })

    }, function (callback) {
        MPPeak.exec(function (err, res) {
            callback(null, res);
        })
        //chiller1
    }
 ], function (err, results) {
           console.log(results);
 });

так выглядят мои данные в базе данных.в коллекцию попало только одно поле с именем «Данные», которое получает данные нескольких датчиков за один час.

 { _id: 5b2118c4ae33249711a498a6,
  Data: '13-06-2018 20:14:46 DPMPow_P01_04_ 699.15 ',
  __v: 0 },
  { _id: 5b2118c4ae35439711a498a6,
  Data: '13-06-2018 20:14:46 MPPeak_P01_04_ 699.15 ',
  __v: 0 },
  { _id: 5b23428c4ae32989711a498a6,
   Data: '13-06-2018 20:14:46 DPMAmp_P01_04_ 699.15 ',
  __v: 0 },
    { _id: 5b21234c4ae32989711a498a6,
    Data: '13-06-2018 20:14:46 DPMkWh_P01_04_ 699.15 ',
   __v: 0 },
  { _id: 5b2118c4ae34989711a598a6,
    Data: '13-06-2018 20:14:46 MxPeak_P01_04_ 699.15 ',
  __v: 0 }

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете попробовать ниже RegEx в поиске запроса

let data = fdevices.find({ "Data": { $regex: /(DPMPow)|(MPPeak)|(DPMAmp)|(DPMkWh)| 
  (MxPeak)/gm } }).sort({ field: 'asc', _id: -1 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...