Агрегирование, если локальное поле существует во внешнем поле

#javascript #reactjs #mongodb #meteor #aggregation

#javascript #reactjs #mongodb #метеор #агрегирование

Вопрос:

Я использую MeteorJS. Теперь я пытаюсь извлечь данные с помощью метода meteor call. Это работает хорошо. Но у меня есть $lookup для агрегирования, оно также работает нормально. Теперь я пытаюсь извлекать данные только по уникальности, дублировать не нужно.

 [![Meteor.methods({
        allIndications(someId) {
            const indications = Promise.await(
                Medicines.aggregate([
                    {
                        $lookup: {
                            from: "indications",
                            localField: "medicine_indications",
                            foreignField: "_id",
                            as: "AllIndications"
                        }
                    },
                    {
                        $unwind: {
                            path: "$AllIndications",
                            preserveNullAndEmptyArrays: true
                        }
                    },

                    { $project: { _id: 1, AllIndications: 1 } }
                ]).toArray()
            );
            return indications;
        }
    });][1]][1]
  

введите описание изображения здесь

Комментарии:

1. Добавьте еще один этап $group к последним всем ссылкам. вы получите уникальные указания.

Ответ №1:

Вы можете попробовать это

 [![Meteor.methods({
    allIndications(someId) {
        const indications = Promise.await(
            Medicines.aggregate([
                {
                    $lookup: {
                        from: "indications",
                        localField: "medicine_indications",
                        foreignField: "_id",
                        as: "AllIndications"
                    }
                },
                {
                    $unwind: {
                        path: "$AllIndications",
                        preserveNullAndEmptyArrays: true
                    }
                },
                {
                     $group:{
                         _id:null,
                         AllIndications:{$addToSet: "$AllIndications"}
                     }
                },
                { $project: { _id: 1, AllIndications: 1 } }
            ]).toArray()
        );
        return indications;
    }
});][1]][1]