pymongo获取收藏ID

时间:2014-07-01 09:21:27

标签: python mongodb pymongo aggregation-framework

我有这段代码:

def get_attribute_colour(colour_code):
    attribute_colour_meta = db.attributes.aggregate([{ '$match': {"name.en-UK": "Colour"} },
        { '$unwind' : "$values" },
        { '$project': { "code" : "$values.code", "valueId": "$values._id"} },
        { '$match': {"code": colour_code} }])

    return attribute_colour_meta['result']

查找名为attributes的集合,其具有以下结构:

> db.attributes.find({}).pretty();
{
    "_id" : ObjectId("53b27bded901f26432996e00"),
    "values" : [
        {
            "code" : "AQ",
            "pmsCode" : "638c",
            "name" : {
                "en-UK" : "Aqua"
            },
            "tcxCode" : "16-4529 TCX",
            "hexCode" : "#00aed8",
            "images" : [
                "AQ.jpg"
            ],
            "_id" : ObjectId("53b27bded901f26432996d83")
        },
        {
            "code" : "AQ",
            "pmsCode" : "3115c",
            "name" : {
                "en-UK" : "Aqua"
            },
            "tcxCode" : "",
            "hexCode" : "#00c4db",
            "images" : [
                "AQ.jpg"
            ],
            "_id" : ObjectId("53b27bded901f26432996d84")
        },
.....
        }
    ],
    "name" : {
        "en-UK" : "Colour"
    }
}
{
    "_id" : ObjectId("53b27bded901f26432996e1b"),
    "values" : [
        {
            "code" : 0,
            "_id" : ObjectId("53b27bded901f26432996e01"),
            "name" : {
                "en-UK" : "0-3 MTHS"
            }
        },
.....
        }
    ],
    "name" : {
        "en-UK" : "Size"
    }
}
{
    "_id" : ObjectId("53b27bded901f26432996e28"),
    "values" : [
        {
            "Currency" : "GBP",
            "_id" : ObjectId("53b27bded901f26432996e1c"),
            "name" : {
                "en-UK" : "Carton price list"
            }
        },
        }
    ],
    "name" : {
        "en-UK" : "Price list"
    }
}
>

基本上,有3个属性coloursizeprice list,每个属性都有名为values的子文档

在我的def get_attribute_colour函数中,如何在结果中返回属性的_id,以便得到类似的内容:

    { attributeId: ObjectId("53b27bded901f26432996e00"), 
    valueId: ObjectId("53b27bded901f26432996d83") }

结果确实返回_id:

[{u'code': u'AQ', u'_id': ObjectId('53b27bded901f26432996e00'), u'valueId': ObjectId('53b27bded901f26432996d83')}]

但我没看到指定的位置?

任何建议都非常感激。

0 个答案:

没有答案