неизвестный аргумент mongodb для $ lookup: foreignKey - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь "объединить" две модели (расписание и пользователя) в агрегат расписания, используя $ lookup , но мой ответ - "неизвестный аргумент для $ lookup: foreignKey".Я использую Node v8.11.3 и MongoDB 4.0, которые я использую. Я искал несколько дней и не знаю, как решить эту проблему.

маршруты / отчет.js

  Schedule.aggregate([{
            $match: {
                'store': req.body.store,
                'scheduleStart': {
                    $lte: start,
                    $gte: req.body.period
                },
                'status': {
                    $lte: 3,
                    $gte: 1
                }
            }
        },
        {
            $group: {
                "_id": {
                    "name": "$customer.name",
                    "cpf": "$customer.cpf",
                    "id": "$customer.id",
                    "phone": "$customer.phone"
                },
                "totalValue": {
                    $sum: "$value"
                },
                "totalServices": {
                    $sum: 1
                },
            }
        },
        {
            $lookup: {
                from: 'user',
                localField: 'customer.id',
                foreignKey: '_id',
                as: 'user_detail'
            }
        }

    ])

models / schedule.js

const ScheduleSchema = new Schema({
  store: {
    type: String,
    required: true
  },
  customer: {
    id: {
      type: String,
      required: true
    },
    name: {
      type: String,
      required: true
    },
    avatar: String,
    phone: {
      type: String,
      required: true
    },
    cpf: {
      type: String,
      required: true
    },
  }, {
  timestamps: {
    createdAt: 'created',
    updatedAt: 'updated'
  }
});

модели/user.js

const UserSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    storeKey: {
        type: String,
        required: true
    },
    avatar: String,
    birthday: String,
    phone: {
        type: String,
        required: true
    },
    cpf: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        passwordHash: String,
        salt: String
    },
}, {
    timestamps: true
});

1 Ответ

0 голосов
/ 24 августа 2018

Поле foreignKey на этапе агрегации $ lookup должно быть foreignField на https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#equality-match.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...