如何使用Java在MongoDB中通过嵌入式数组过滤文档
我有以下文件:如何使用Java在MongoDB中通过嵌入式数组过滤文档,java,arrays,mongodb,count,nested,Java,Arrays,Mongodb,Count,Nested,我有以下文件: { "_id": { "$oid": "5d4037f811b787414dcfb3a5" }, "id": 1, "seats": [{ "available": true }, { "available": true }, { "available": true }, { "available": false }] } 如何仅使用m
{
"_id": {
"$oid": "5d4037f811b787414dcfb3a5"
},
"id": 1,
"seats": [{
"available": true
}, {
"available": true
}, {
"available": true
}, {
"available": false
}]
}
如何仅使用mongodb java驱动程序查询可用座位数大于3的文档
我想要的是这样的:(seats.available eq true)gt 3
有可能吗?我想这可能是重复的 我猜是这样的:
{ $where: "this.seats.available.length > 3" }
要计算可用座位的数量,我们可以使用$reduce聚合阶段。它将计算可用性标记为“真”的座位数。在下一个管道阶段,将过滤可用座位数大于3的文档
db.checks.aggregate([
{
$addFields:{
"availableSeats":{
$reduce:{
"input":"$seats",
"initialValue": 0,
"in":{
$sum:[
"$$value",
{
$cond:[
{
$eq:["$$this.available",true]
},
1,
0
]
}
]
}
}
}
}
},
{
$match:{
"availableSeats":{
$gte: 3
}
}
}
]).pretty()