У меня есть такой набор данных:
{
"_id" : ObjectId("5c35f04c4e92b8337885d9a6"),
"activity" : {
"a1": 10,
"a2": 11,
"a3": 12,
"a4": 13,
"a5": 14,
"b1": 5,
"b2": 6
}
}
ПРИМЕЧАНИЕ: Это фиктивные записи, реальные записи будут около 50 или 60 из этих 30 от простого добавления (как от a1 до a5) и 20 записей для отношения (как b1 и b2).Для того, чтобы задать концепцию, я минимизирую набор данных
. Теперь от a1 до a5 я должен сделать сложение с некоторым весовым значением умножения, например так: допустим, значение умножения составляет 0,5
so it will be like this:
(a1*0.5 + a2*0.5 + a3*0.5 + a4*0.5 + a5*0.5)
, а затемЯ должен взять соотношение b1 и b2, а затем умножить на некоторый вес, подобный этому
((b1:b2)*0.5)
Итак, окончательный расчет будет таким:
(a1*0.5 + a2*0.5 + a3*0.5 + a4*0.5 + a5*0.5 + (b1:b2)*0.5)
Для этого я использовал агрегацию mongodb,Мой код такой:
db.Collection.aggregate([
{ $match: { _id: ObjectId("5c35f04c4e92b8337885d9a6") } },
{ $unwind: "$_id" },
{
$project: {
"activity.score": {
$add: [
{
$multiply: [
"$activity.a1",
0.5
]
},
{
$multiply: [
"$activity.a2",
0.5
]
},
{
$multiply: [
"$activity.a3",
0.5
]
},
{
$multiply: [
"$activity.a4",
0.5
]
},
{
$multiply: [
"$activity.a5",
0.5
]
},
{
$multiply: [
{
$divide: [
"$activity.b1",
"$activity.b2"
]
},
0.5
]
}
]
}
}
}
])
.then(data => {
console.log(data);
})
.catch(error => {
console.log(error);
});
Таким образом, я получил ответ, но в случае, если мой b2 будет 0, как это:
{
"_id" : ObjectId("5c35f04c4e92b8337885d9a6"),
"activity" : {
"a1": 10,
"a2": 11,
"a3": 12,
"a4": 13,
"a5": 14,
"b1": 5,
"b2": 0
}
}
MongoDB генерирует ошибку, т.е. MongoError: нельзя $ делить на ноль .Есть ли кто-нибудь, кто может подсказать мне, как этого добиться.Любая помощь или предложение действительно ценны для этого.Заранее благодарим за усилия и взаимодействие.