Я пытаюсь рассчитать средний порядок заказа 2-го порядка моих клиентов.Mongo - Среднее значение второго документа
мне удастся сделать среднее количество 1-го порядка с помощью этого:
db.users.aggregate([
{$match: {
$and: [
{$nor : [ { "emails.0.address" : "[email protected]" }, { "X.0.X" : "[email protected]" },{ "emails.0.address" : "[email protected]" },{ "emails.0.address" : "[email protected]" } ]},
{orders: {$exists: true}}
]
}},
{$unwind: "$orders"},
{$group: {
_id: "$_id",
firstOrder: {$first: "$orders"}
}},
{$group: {
_id: "$_id",
total: {$sum: "$firstOrder.total"}
}},
{$group: {
_id: '',
average: {$avg: "$total"}
}}
])
Но это, кажется, немного по-другому, чтобы вычислить среднее количество 2-го порядка.
Я пытался работать с $Slice
, но он не работает с aggregate
и $Skip
. Пропустите только первый заказ списка, но не в первом порядке каждого пользователя.
У вас есть какие-либо идеи по этому вопросу?
Большое спасибо за помощь. Ричард
Поскольку ** orders ** - это массив, если второй элемент равен первому в некоторых документах, то некоторые из второго порядка будут потеряны ** выше согласованного **, что приведет к неправильному результату. – Wizard
@Wizard Я надеюсь, что интеллигентные люди будут использовать уникальный идентификатор здесь. И поскольку нет никакого другого способа «срезать» массив в структуре агрегации, я не понимаю смысла вашей критики. У вас есть что-то умное предложить? Или ты просто ворчаешь, потому что сначала не думал об этом? –
Я просто говорю о возможности. Я думаю, что любой вопрос и ответ открыты для обсуждения на stakoverflow. И люди могут ошибаться во время запроса или ответа, все возможно. Я удивлен, что мой комментарий делает вас несчастными. – Wizard