java mongodb filters_mongoDB子集数组筛选之filter
1.示例数据db.test.insert({"className" : "test_1","studentNumber" : 5,"students" : [{"name" : "xiaoming","sex" : true,"age" : 19}, {"name" : "xiaohua","sex" : false,"age" : 17}, {"name" : "daming","sex" :
1.示例数据
db.test.insert(
{
"className" : "test_1",
"studentNumber" : 5,
"students" : [{
"name" : "xiaoming",
"sex" : true,
"age" : 19
}, {
"name" : "xiaohua",
"sex" : false,
"age" : 17
}, {
"name" : "daming",
"sex" : true,
"age" : 17
}, {
"name" : "dahua",
"sex" : false,
"age" : 18
}, {
"name" : "tom",
"sex" : true,
"age" : 18
}]
}
)
2.查询描述
上面是我们的示例数据,有的时候我们在子查询时,不想把所有的子集全部查询出来,可能只想查出一部分满足条件的。那么我们可以使用$filter来实现。
现在我要只想查出班级中,性别为男的数据。
db.test.aggregate([
{
"$project" : {
"className" : 1,
"studentNumber" : 1,
"students" : {
"$filter" : {
"input" : "$students",
"as" : "item",
"cond" : {
"$eq" : ["$$item.sex", true]
}
}
}
}
}
])
查询结果
我想把男生女生分组在两个不同子集
db.test.aggregate([
{
"$project" : {
"className" : 1,
"studentNumber" : 1,
"boy" : {
"$filter" : {
"input" : "$students",
"as" : "item",
"cond" : {
"$eq" : ["$$item.sex", true]
}
}
},
"gril" : {
"$filter" : {
"input" : "$students",
"as" : "item",
"cond" : {
"$eq" : ["$$item.sex", false]
}
}
}
}
}
])
查询结果
3.语法解析
语法解析
官网关于$filter解析,点击
更多推荐
所有评论(0)