применить два условия к обоим документам агрегатного узла mongodb js - PullRequest
0 голосов
/ 08 июля 2019

Я хочу выбрать сегодняшние отчеты из документа BatteryReport, а также получить информацию об аккумуляторах. Я использую статистический метод для получения этой информации, но я не могу отфильтровать свои документы по reortDate и batteryBankId. В соответствии со схемами я хочу получить документы, отфильтрованные как reportDate из первой схемы, и batteryBankId из второй схемы.

BatteryReportSchema is:

{
    "_id" : ObjectId("5d219603228e0235a8d0768c"),
    "batteryId" : "1",
    "batteryStatus" : "H",
    "batteryVoltage" : "1.5",
    "batteryTemperature" : "10",
    "reportDate" : "07/07/2019",
    "__v" : 0
}

батареяСхема это:

{
    "_id" : ObjectId("5d21fa28b4a2221ccc4e5f31"),
    "batteryId" : "1",
    "batteryBrand" : "sdf",
    "batteryModel" : "sdfsdf",
    "batteryProductDate" : "2019-07-07",
    "batteryVoltage" : "123",
    "batteryVoltageMin" : "123",
    "batteryVoltageMax" : "12",
    "batteryInternalResistance" : "21",
    "batteryCapacity" : "12",
    "batteryMinTemperature" : "123213",
    "batteryMaxTemperature" : "123",
    "batteryMaximumChargingCurrent" : "123",
    "batteryCycleOfCharge" : "123",
    "batteryBankId" : ObjectId("5d21f9e5b4a2221ccc4e5f2e"),
    "__v" : 0
}

без фильтра совпадений:


 BatteryReports.aggregate([
        {
            $lookup:
                {
                    from: "batteryschemas",
                    localField: "batteryId",
                    foreignField: "batteryId",
                    as: "batteryReports_with_their_info"
                }
        }


    ], function (err, result) {
        console.log(result);
        if (err) {
            resp.status(status.NOT_FOUND).json({'respond': err + ''});
        } else {

            resp.status(status.OK).json(result);
        }
        // console.log(result);
    });


с фильтром совпадений:


 BatteryReports.aggregate([
        {
            $lookup:
                {
                    from: "batteryschemas",
                    localField: "batteryId",
                    foreignField: "batteryId",
                    as: "batteryReports_with_their_info"
                }
        }
        ,
        {
            $match: {
                $and: [{"reportDate": moment().format('L')}]
            }
        }
        ,
        {
            $replaceRoot: {newRoot: {$mergeObjects: [{$arrayElemAt: ["$batteryReports_with_their_info", 0]}, "$$ROOT"]}}
        }
        ,
        {
            $project: {
                batteryReports_with_their_info: 0,
                batteryBrand: 0,
                batteryVoltage: 0,
                batteryMaximumChargingCurrent: 0,
                batteryCycleOfCharge: 0,
                batteryModel: 0,
                batteryProductDate: 0,
                batteryInternalResistance: 0,
                batteryCapacity: 0,
                __v: 0
            }
        }


    ], function (err, result) {
        console.log(result);
        if (err) {
            resp.status(status.NOT_FOUND).json({'respond': err + ''});
        } else {

            resp.status(status.OK).json(result);
        }
        // console.log(result);
    });


результат метода без фильтра совпадений:

[
    {
        "_id": "5d219603228e0235a8d0768c",
        "batteryId": "1",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa28b4a2221ccc4e5f31",
                "batteryId": "1",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21f9e5b4a2221ccc4e5f2e",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d219603228e0235a8d0768d",
        "batteryId": "2",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa4cb4a2221ccc4e5f32",
                "batteryId": "2",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d219648228e0235a8d0768f",
        "batteryId": "1",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa28b4a2221ccc4e5f31",
                "batteryId": "1",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21f9e5b4a2221ccc4e5f2e",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d219648228e0235a8d07690",
        "batteryId": "2",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa4cb4a2221ccc4e5f32",
                "batteryId": "2",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d219651228e0235a8d07692",
        "batteryId": "2",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa4cb4a2221ccc4e5f32",
                "batteryId": "2",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d219651228e0235a8d07693",
        "batteryId": "1",
        "batteryStatus": "H",
        "batteryVoltage": "1.5",
        "batteryTemperature": "10",
        "reportDate": "07/07/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa28b4a2221ccc4e5f31",
                "batteryId": "1",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21f9e5b4a2221ccc4e5f2e",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d22d720899cba2cdc87be54",
        "batteryId": "1",
        "batteryStatus": "H",
        "batteryVoltage": "4.5",
        "batteryTemperature": "34",
        "reportDate": "07/08/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa28b4a2221ccc4e5f31",
                "batteryId": "1",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21f9e5b4a2221ccc4e5f2e",
                "__v": 0
            }
        ]
    },
    {
        "_id": "5d22d720899cba2cdc87be55",
        "batteryId": "2",
        "batteryStatus": "H",
        "batteryVoltage": "14.5",
        "batteryTemperature": "60",
        "reportDate": "07/08/2019",
        "__v": 0,
        "batteryReports_with_their_info": [
            {
                "_id": "5d21fa4cb4a2221ccc4e5f32",
                "batteryId": "2",
                "batteryBrand": "sdf",
                "batteryModel": "sdfsdf",
                "batteryProductDate": "2019-07-07",
                "batteryVoltage": "123",
                "batteryVoltageMin": "123",
                "batteryVoltageMax": "12",
                "batteryInternalResistance": "21",
                "batteryCapacity": "12",
                "batteryMinTemperature": "123213",
                "batteryMaxTemperature": "123",
                "batteryMaximumChargingCurrent": "123",
                "batteryCycleOfCharge": "123",
                "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
                "__v": 0
            }
        ]
    }
]

результат с фильтром совпадений:

[
    {
        "_id": "5d22d720899cba2cdc87be54",
        "batteryId": "1",
        "batteryVoltageMin": "123",
        "batteryVoltageMax": "12",
        "batteryMinTemperature": "123213",
        "batteryMaxTemperature": "123",
        "batteryBankId": "5d21f9e5b4a2221ccc4e5f2e",
        "batteryStatus": "H",
        "batteryTemperature": "34",
        "reportDate": "07/08/2019"
    },
    {
        "_id": "5d22d720899cba2cdc87be55",
        "batteryId": "2",
        "batteryVoltageMin": "123",
        "batteryVoltageMax": "12",
        "batteryMinTemperature": "123213",
        "batteryMaxTemperature": "123",
        "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
        "batteryStatus": "H",
        "batteryTemperature": "60",
        "reportDate": "07/08/2019"
    }
]

но мне нужен документ со специальным идентификатором batteryBankId, например, batteryBankId: 5d21fa00b4a2221ccc4e5f30, поэтому окончательный ответ должен быть:

 {
        "_id": "5d22d720899cba2cdc87be55",
        "batteryId": "2",
        "batteryVoltageMin": "123",
        "batteryVoltageMax": "12",
        "batteryMinTemperature": "123213",
        "batteryMaxTemperature": "123",
        "batteryBankId": "5d21fa00b4a2221ccc4e5f30",
        "batteryStatus": "H",
        "batteryTemperature": "60",
        "reportDate": "07/08/2019"
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...