代码之家  ›  专栏  ›  技术社区  ›  Jo Joy

查找多个带有1个Mongoose限制的升序文档

  •  1
  • Jo Joy  · 技术社区  · 6 年前

    我是MongoDB新手。

    这就是我试过的

    var fdevices = mongoose.model('fdevices', dataModelSchema);
    var DPMPow = fdevices.findOne({ "Data": { $regex: /DPMPow_P01/i } 
    }).sort({ field: 'asc', _id: -1 }); 
    var DPMAmp = fdevices.findOne({ "Data": { $regex: /DPMAmp_P01/i } 
    }).sort({ field: 'asc', _id: -1 });
    var DPMkWh = fdevices.findOne({ "Data": { $regex: /DPMkWh_P01/i } 
     }).sort({ field: 'asc', _id: -1 });
     var MxPeak = fdevices.findOne({ "Data": { $regex: /MxPeak_P01/i } 
     }).sort({ field: 'asc', _id: -1 });
    var MPPeak = fdevices.findOne({ "Data": { $regex: /MPPeak_P01/i } 
    }).sort({ field: 'asc', _id: -1 });
    
        function getReady() {
         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);
      }) ], function (error, results) {
        console.log(results);
       }
       );
      }
    

    上面的方法对我有效,但速度很慢。有没有一种方法可以设计单个查询并获得相同的结果,而不是逐个查询数据。 在我的集合中有一个名为“data”的字段,我的集合包含超过一百万个文档。

    1 回复  |  直到 6 年前
        1
  •  0
  •   mehta-rohan    6 年前
    var fdevices = mongoose.model('fdevices', dataModelSchema); 
    var DPMPow = fdevices.find({
    $or: [{
        "Data": { $regex: /DPMPow/i }
    }, {
        "Data": { $regex: /DPMAmp/i }
    }, {
        "Data": { $regex: /DPMkWh/i }
    }, {
        "Data": { $regex: /MxPeak/i }
    }, {
        "Data": { $regex: /MPPeak/i }
    }]
    }).sort({ field: 'asc', _id: -1 });
    
    DPMPow.exec(function(err, res) {
    //Now travese thru all the records, when ever you find the unique pattren of 
    //data remove all the instances of that particular pattren  
    });