我在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"
}
]
}
]
}
我的语法出了什么问题?我愿意接受其他建议以实现我的目标
答案 0 :(得分:0)
使用
pd.Series
结果
db.departments.aggregate([
{ $unwind: "$teams" },
{ $unwind: "$teams.employees" },
{ $project: { _id: 0, name: "$teams.employees.name" } },
{ $match: { "name": { $regex: /.*o.*/ }} }
]).toArray()