gpt4 book ai didi

arrays - 在mongodb中的数组中查找最近的值

转载 作者:可可西里 更新时间:2023-11-01 10:02:02 25 4
gpt4 key购买 nike

我有很多学生,每个学生在每个月的不同日子都被分配了家务。

例如:

{ name: 'Josh', choredays: [2, 5, 16, 20, 28]},
{ name: 'Will', choredays: [5, 15, 18, 21, 22]}

给定一个数字,我想在第二天将每个学生必须做的家务作为输出。

例如,给定14,我想得到

Josh 16
Will 15

如何在 Mongo 聚合中表达这一点?

最佳答案

你可以试试下面的聚合

您需要使用 $filter消除较少输入值的聚合运算符。然后使用 $slice这消除了更大的值(value)。

db.collection.aggregate([
{ "$addFields": {
"items": {
"$filter": {
"input": "$choredays",
"as": "chore",
"cond": { "$gte": [ "$$chore", 14 ] }
}
}
}},
{ "$addFields": { "items": { "$slice": [ "$items", 0, 1 ] }}},
{ "$unwind": "$items" },
{ "$project": { "items": 1, "name": 1 }}
])

将给出如下输出

[
{
"items": 16,
"name": "Josh"
},
{
"items": 15,
"name": "Will"
}
]

可以查一下here

关于arrays - 在mongodb中的数组中查找最近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50799738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com