如何获取集合'MongoDB的零件数据?

时间:2013-06-15 23:33:27

标签: mongodb mongoengine

有人可以解释一下选择部分收藏吗?我有一个嵌套结构作为示例:

{
    some_list : [
        {
            'name': 'Alexander',
            'tasks': [
                'task_1',
                'task_2',
            ]
        },
        {
            'name': 'Stepan',
            'tasks': [
                'task_1',
                'task_2',
                'task_3',
            ]
        },
        {
            'name': 'Nikolay',
            'tasks': [
                'task_1'
            ]
        },
        {
            'name': 'Irina',
            'tasks': [
                'task_1',
                'task_2'
            ]
        }
    ]
}

我如何才能获得亚历山大的任务(没有不必要的数据)?

2 个答案:

答案 0 :(得分:3)

coll.find({'some_list.name':'Alexander'},{'some_list.$' : 1, _id : 0}).pretty()
{
    "some_list" : [
        {
            "name" : "Alexander",
            "tasks" : [
                "task_1",
                "task_2"
            ]
        }
    ]
}

答案 1 :(得分:0)

您需要$elemMatch

rsAlgo:PRIMARY> db.algo.find({"some_list.name":"Alexander"},{"some_list":{$elemMatch:{"name":"Alexander"}}});
{ "_id" : ObjectId("51bedddfd894dfcb21087fc2"), "some_list" : [ { "name" : "Alexander", "tasks" : [ "task_1", "task_2" ] } ] }

或使用.pretty()来解释结果

{
        "_id" : ObjectId("51bedddfd894dfcb21087fc2"),
        "some_list" : [
                {
                        "name" : "Alexander",
                        "tasks" : [
                                "task_1",
                                "task_2"
                        ]
                }
        ]
}