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" : 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解析,点击
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)