我有一个集合,里面有这样的文档
{
    "_id" : ObjectId("5773ac6a486f811694711875"),
    "bsk" : {
        "bskItems" : [ 
            {
                "id" : 4,
                "bskItemLineType" : "SaleItem",
                "product" : {
                    "description" : "reblochon"
                }
            }, 
            {
                "id" : 5,
                "bskItemLineType" : "SaleItem",
                "product" : {
                    "description" : "Pinot Noir"
                }
            }, 
            {
                "id" : 13,
                "bskItemLineType" : "PromotionItem",
                "promotionApplied" : {
                    "bskIds" : [ 
                        4, 
                        5
                    ]
                }
            }, 
            {
                "id" : 8,
                "bskItemLineType" : "SaleItem",
                "product" : {
                    "description" : "Food"
                }
            }, 
            {
                "id" : 10,
                "bskItemLineType" : "SubTotalItem"
            }, 
            {
                "id" : 12,
                "bskItemLineType" : "TenderItem"
            }, 
            {
                "id" : 14,
                "bskItemLineType" : "ChangeDue"
            }
        ]
    }
}我想要一个输出,在那里我可以看到"promotionsApplied“和它们所应用的项的描述。对于上面的文档,"promotionsApplied“是"bsk.BskItems.id”4和5,所以我希望输出是:
{
    "_id": xxxxx,
    "promotionAppliedto : "reblochon"
},
{
    "_id": xxxxx,
    "promotionAppliedto : "Pinot Noir"
}      查询如下:
 db.getCollection('DSTest').aggregate([
{$project:{"bsk.bskItems.product.description":1,"bsk.bskItems.id":1}},
{$unwind: "$bsk.bskItems"},
    ])为我获取描述
db.getCollection('DSTest').aggregate([
{$project:{"bsk.bskItems.promotionApplied.bskIds":1}},
{$unwind: "$bsk.bskItems"},
{$unwind:"$bsk.bskItems.promotionApplied.bskIds"},
    ])给我申请的促销。我希望能够使用$lookup加入基于_id和bsk.bskItems.promotionApplied.bskIds以及_id和bsk.bskItems.id的两者,但我不知道如何做到这一点。
发布于 2016-07-03 06:14:43
使用文档类型数据库-最好存储升级元数据,而不是只存储id。请参阅附件中的示例
"promotionApplied" : [{
        bskId : 4,
        name : "name",
        otherData : "otherData"
    }, {
        bskId : 5,
        name : "name5",
        otherData : "otherData5"
    }
]https://stackoverflow.com/questions/38139452
复制相似问题