繁体   English   中英

使用正则表达式从Mongodb检索多个数据

[英]Using regex to Retrieve multiple data from Mongodb

我是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);
 });

这就是我的数据在数据库中的样子。 集合中只有一个字段名为“ Data”(数据),该字段每隔一小时就会收到多个传感器数据。

 { _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 }

您可以在查找查询中的RegEx下面尝试

let data = fdevices.find({ "Data": { $regex: /(DPMPow)|(MPPeak)|(DPMAmp)|(DPMkWh)| 
  (MxPeak)/gm } }).sort({ field: 'asc', _id: -1 });

暂无
暂无

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

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