Я некоторое время работал над базой данных Mongo.В базе данных есть некоторые посещения, которые имеют эту форму:
[
{
"isPaid": false,
"_id": "5c12bc3dcea46f9d3658ca98",
"clientId": "5c117f2d1d6b9f9182182ae4",
"came_by": "Twitter Ad",
"reason": "Some reason",
"doctor_services": "Some service",
"doctor": "Dr. Michael",
"service": "Special service",
"payments": [
{
"date": "2018-12-13T21:23:05.424Z",
"_id": "5c12cdb9b236c59e75fe8190",
"sum": 345,
"currency": "$",
"note": "First Payment"
},
{
"date": "2018-12-13T21:23:07.954Z",
"_id": "5c12cdbbb236c59e75fe8191",
"sum": 100,
"currency": "$",
"note": "Second payment"
},
{
"date": "2018-12-13T21:23:16.767Z",
"_id": "5c12cdc4b236c59e75fe8192",
"sum": 5,
"currency": "$",
"note": "Third Payment"
}
],
"price": 500,
"createdAt": "2018-12-13T20:08:29.425Z",
"updatedAt": "2018-12-13T21:42:21.559Z",
}
]
Мне нужно найти какой-либо запрос, чтобы обновить поле одного платежа на основе _id посещения и _id платежа, который находится внутри вложенногомассив.Кроме того, когда вы обновляете сумму платежа до некоторого числа, чтобы сумма всех платежей была больше или равна цене, поле isPaid автоматически обновляется до true.
Я пробовал некоторые запросы в mongoose, чтобы получить первыйчасть, но ни один из них, кажется, не работает:
let paymentId = req.params.paymentId;
let updatedFields = req.body;
Visit.update(
{ "payments._id": paymentId },
{
$set: {
"visits.$": updatedFields
}
}
).exec((err, visit) => {
if (err) {
return res.status(500).send("Couldn't update payment");
}
return res.status(200).send("Updated payment");
});
Что касается второй части вопроса, я ничего не придумал, поэтому я был бы признателен, по крайней мере, дать некоторое указание о том, как подойти к нему.