0

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

{
    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'
            ]
        }
    ]
}

我怎样才能只得到亚历山大的任务(没有不必要的数据)?

4

2 回答 2

3
coll.find({'some_list.name':'Alexander'},{'some_list.$' : 1, _id : 0}).pretty()
{
    "some_list" : [
        {
            "name" : "Alexander",
            "tasks" : [
                "task_1",
                "task_2"
            ]
        }
    ]
}
于 2013-06-16T01:40:53.737 回答
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"
                        ]
                }
        ]
}
于 2013-06-17T14:33:30.527 回答