如何制作过滤器,然后在 mongodb 中切片一些数组
我尝试过这个聚合,但出现错误。我认为问题出在项目阶段。项目阶段不能接受两种表达方式。还有别的办法吗
[
{
$match: {
_id: ObjectId("65a739bc29c608fd90b65038"),
},
},
{
$project: {
date: 1,
serviceScheduleId: 1,
serviceId: 1,
branchOfficeId: 1,
queue: {
$filter: {
input: "$queue",
cond: {
$and: [
{
$eq: [
"$$this.user.status",
"waiting",
],
},
],
},
},
$slice:{"$queue",1]
},
},
},
]
您应该需要额外的
$set
/$project
阶段来使用 queue
运算符设置 $slice
字段。
{
$project: {
...,
queue: {
$filter: {
input: "$queue",
cond: {
$and: [
{
$eq: [
"$$this.user.status",
"waiting"
]
}
]
}
}
}
}
},
{
$set: {
queue: {
$slice: ["$queue", 1]
}
}
}
或者将整个
$filter
运算符作为 $slice
运算符的第一个参数。
{
$project: {
...
queue: {
$slice: [
{
$filter: {
input: "$queue",
cond: {
$and: [
{
$eq: [
"$$this.user.status",
"waiting"
]
}
]
}
}
},
1
]
}
}
}