Mongoose: $ sum в $ project возвращает только ноль - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть запрос, использующий $ lookup , который "объединяет" две модели, и $ project , чтобы выбрать все поля, которые мне нужны, и в этом $ project Мне нужно $ sum значение, называемое totalValue, но возвращать только ноль:

Мой запрос

User.aggregate([{
      $match: {
        storeKey: req.body.store,
      }
    },
    {
      $group: {
        _id: {
          id: "$_id",
          name: "$name",
          cpf: "$cpf",      
          phone: "$phone",
          email: "$email",
          birthday: "$birthday",
          lastName: "$lastname"      
        },
        totalServices: {
          $sum: "$services"
        },    
      }
    },
    {
      $lookup: {
        from: "schedules",
        "let": { "id": "$_id.phone" },
        "pipeline": [
          { "$match": { "$expr": { "$eq": ["$customer.phone", "$$id"] }}},
          { "$project": { "scheduleStart": 1, "scheduleEnd": 1 }}
        ],
        "as": "user_detail"
      }  
    },  
    {
      $project: {
        _id: 1,
        name: 1,
        name: 1,
        cpf: 1,      
        phone: 1,
        email: 1,
        birthday: 1,
        totalServices: 1,
        totalValue: { $sum : "$user_detail.value" },   // here only return zero   
        count: {
          $sum: 1
        },
        user_detail: 1
      }
    },

1 Ответ

0 голосов
/ 12 декабря 2018

Вам необходимо $project ваше поле value в проекции user_details, чтобы получить его на следующем этапе агрегирования

{ "$project": { "scheduleStart": 1, "scheduleEnd": 1, "value": 1 }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...