我在mongodb中的聚合有点问题;
收藏uczelnia:
{
"_id" : ObjectId("5a5e404e6494620e7471c51a"),
"uczelnia" : "Politechnika Czestochowska",
"miasto" : "Czestochowa",
"ulica" : "Armii Krajowej 1",
"doktorzy" : [
{
"imie" : "Janina",
"nazwisko" : "Kowalska"
},
{
"imie" : "Dorota",
"nazwisko" : "Janiak"
},
{
"imie" : "Andrzej",
"nazwisko" : "Duda"
}
]}
{
"_id" : ObjectId("5a5e40636494620e7471c51b"),
"uczelnia" : "Politechnika Wroclawska",
"miasto" : "Wroclaw",
"ulica" : "Jodlowa 15",
"doktorzy" : [
{
"imie" : "Jolanta",
"nazwisko" : "Kanar"
},
{
"imie" : "Mateusz",
"nazwisko" : "Laskowski"
},
{
"imie" : "Piotr",
"nazwisko" : "Potrzebny"
}
]}
我的聚合:
db.uczelnia.aggregate([{
$match: {$unwind: "$doktorzy.imie"{$not: /a$/}}},{
$group: {_id: "$doktorzy.imie", liczba_Pan:{$sum:1}}},{
$sort: { liczba_Pan: 1 }}]);
我希望找到所有的医生(doktorzy)女性(名字中的最后一个字母) 学校(uczelnia)。 IMIE(名称)
告诉我这里弄错了什么,谢谢
答案 0 :(得分:1)
你无法在1个展开管道阶段做到这一点。 第一个动作是展开数组,然后匹配并重新组合。 我将您的聚合更改为:
db.collection.aggregate(
[
{
$unwind: "$doktorzy"
},
{
$match: {
"doktorzy.imie" : { $regex : "a$", $options : "i"}
}
},
{
$group: {_id: "$doktorzy.imie", liczba_Pan:{$sum:1}}
},
]);
匹配是一个正则表达式忽略大小写并匹配imie结束于" a"