我是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 }
答案 0 :(得分:0)
您可以在查找查询
中尝试以下RegExlet data = fdevices.find({ "Data": { $regex: /(DPMPow)|(MPPeak)|(DPMAmp)|(DPMkWh)|
(MxPeak)/gm } }).sort({ field: 'asc', _id: -1 });