"errmsg": "Нераспознанное имя этапа конвейера: 'totalAmount'" - PullRequest
0 голосов
/ 09 октября 2018

Я изучаю MongoDB и пытаюсь реализовать команду, связанную с агрегациями.

Коллекция выглядит следующим образом:

{ "_id" : ObjectId("5bbc185f132cf4170a2f5fd3"), "custID" : "A123", "Amount" : 500, "status" : "A" }
{ "_id" : ObjectId("5bbc187d132cf4170a2f5fd4"), "custID" : "A123", "Amount" : 250, "status" : "A" }
{ "_id" : ObjectId("5bbc188d132cf4170a2f5fd5"), "custID" : "B212", "Amount" : 200, "status" : "A" }

Первый запрос Find out total amount for individual customer ID having status ‘A’

Из этогоЯ закодировал это:

db.emp.aggregate([{$match:{'status':'A'}},{'totalAmount':{$sum:'$Amount'}}])

Но получаю эту ошибку:

"errmsg" : "Unrecognized pipeline stage name: 'totalAmount'"

Где я иду не так?

Кроме того, я знаю, что я получу много ошибок и сомнений позже.Есть ли хорошая платформа, где я могу задавать такие вопросы, а не ставить их на SO.

1 Ответ

0 голосов
/ 09 октября 2018

Можно попробовать ниже агрегации

totalAmount не является этапом конвейера агрегации.На этапах конвейера mongodb есть оператор, который можно использовать в агрегационном конвейере .А также вам нужно использовать $group этап, чтобы получить суммирование всех аналогичных custId с аккумулятором $sum.

db.emp.aggregate([
  { "$match": { "status": "A" }},
  { "$group": {
    "_id": "$custID",
    "Amount": { "$sum": "$Amount" }
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...