MongoDB返回嵌入式文档的嵌入式文档而没有任何父文档?

时间:2019-11-28 04:39:46

标签: mongodb

我在MongoDB中编写了以下代码:

db.departments.insert({name:"Accounting",teams:[
    {name:"Alpha team",employees:[
        {name:"john"},
        {name:"david"}
    ]},
    {name:"True team",employees:[
        {name:"oliver"},
        {name:"sam"}
    ]}
]});

db.departments.insert({name:"Engineering",teams:[
    {name:"Blue team",employees:[
        {name:"singh"},
        {name:"jane"}
    ]},
    {name:"Lazy team",employees:[
        {name:"marleen"},
        {name:"florence"}
    ]}
]});

我想做SELECT name FROM employee WHERE name LIKE '%o%' ORDER BY name DESC的等效项并得到结果[{"name":"oliver"},{"name":"john"},{"name":"florence"}]

我刚刚意识到预测,所以我尝试了这一点:

db.departments.find({"teams.employees.name":/.*o.*/}, {_id:0, "teams.employees.name": 1}).pretty();

但是结果却是这样:

{
        "teams" : [
                {
                        "employees" : [
                                {
                                        "name" : "john"
                                },
                                {
                                        "name" : "david"
                                }
                        ]
                },
                {
                        "employees" : [
                                {
                                        "name" : "oliver"
                                },
                                {
                                        "name" : "sam"
                                }
                        ]
                }
        ]
}
{
        "teams" : [
                {
                        "employees" : [
                                {
                                        "name" : "singh"
                                },
                                {
                                        "name" : "jane"
                                }
                        ]
                },
                {
                        "employees" : [
                                {
                                        "name" : "marleen"
                                },
                                {
                                        "name" : "florence"
                                }
                        ]
                }
        ]
}

我的语法出了什么问题?我愿意接受其他建议以实现我的目标

1 个答案:

答案 0 :(得分:0)

使用

pd.Series

结果

db.departments.aggregate([
    { $unwind: "$teams" },
    { $unwind: "$teams.employees" },
    { $project: { _id: 0, name: "$teams.employees.name" } },
    { $match: { "name": { $regex: /.*o.*/ }} }
]).toArray()