Я пытаюсь рассчитать некоторые даты в моей агрегации и $lookup. Сначала я думал об использовании функции в агрегации, но использование JavaScript запрещено.
{
$lookup: {
from: "sales",
let: { user: "$_id" },
pipeline: [
$project: {
time: //// CALCULATE TIME DIFFERENCE BETWEEN $createdAt and $startedAt,
}
]
as: "sales"
}
}
Есть ли способ вернуть что-то подобное в мой $project?
const calculate = (created, started) => {
const result = moment(created).diff(moment(started))
return result
}
@DorukGüneş Спасибо, что прояснили это! Вы знаете, как я могу сделать расчет с моментом в агрегации BSON?
@oniramarf Отредактировал мой вопрос, так как он отличается.
Я думаю, что они очень похожи, вам нужно просто использовать разных операторов конвейера из другого вопроса.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как я указал в возможном дубликате другого вопроса, вы должны использовать один из операторы конвейера агрегации. В частности, вы должны использовать оператор $subtract, который также работает с датами.
{
$lookup: {
from: "sales",
let: { user: "$_id" },
pipeline: [
$project: {
time: { $subtract: ["$createdAt", "$startedAt"]}
}
]
as: "sales"
}
}
Кажется, вы не можете вызывать внешние функции внутри конвейера агрегации stackoverflow.com/a/25866626/5373869