使用$ lookup聚合获取一个集合中的所有字段以及其他集合中的特定字段

时间:2018-03-22 05:10:19

标签: mongodb aggregation-framework

我有10个字段的集合timestamps。 和集合ie_settings有5个字段。

我使用$lookup加入它们,但它会返回所有字段。

我还尝试让$project返回特定字段。

我想要的是显示timestamps的所有字段 来自ie_settings

的特定字段

这是我尝试的内容:

Timestamp.aggregate([
                { $match: {
                        $or: [
                            { current_status: '60min break now' },
                            { current_status: 'Time out' }
                        ],
                        createdAt: { $gte: date_from, $lt: date_to } }
                },
                { $lookup: {
                        from: "individual_employment_settings",
                        localField: "staff_id",
                        foreignField: "staff_id",
                        as: "ie_settings" }
                },
                {
                    $project: {
                        "ie_settings.branch_office": 1
                    }
                }
            ])

但它只会输出branch_office。我不想列出timestamp fields中的所有$project。 感谢。

1 个答案:

答案 0 :(得分:0)

Timestamp.aggregate([
                { $match: {
                        $or: [
                            { current_status: '60min break now' },
                            { current_status: 'Time out' }
                        ],
                        createdAt: { $gte: date_from, $lt: date_to } }
                },
                { $lookup: {
                        from: "individual_employment_settings",
                        localField: "staff_id",
                        foreignField: "staff_id",
                        as: "ie_settings" }
                },
                {
                    $project: {
                         document: "$$ROOT",
                        "ie_settings.branch_office": 1
                    }
                }
            ])