gpt4 book ai didi

javascript - 蒙戈 : Limit returned records to an incremental count on slice

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:16 25 4
gpt4 key购买 nike

我在 Node 项目中使用 Mongoose ,我有以下查询:

var query = Model.aggregate(
{ $match: { id: id } },
{ $sort: { created: -1 } },
{
$project: {
name: true,
number: true,
created: true,
status: true,
time: true,
array_data: { $slice: ['$array_data', 5] }
}
}
)

我认为 slice 会根据 array_data 字段中的记录数将我的整个记录​​限制为 5,但它仅限制返回的 array_data 元素的数量。

我希望做的是:

假设我的模型中的记录 1 在 array_data 中有 10 个元素我的模型中的记录 2 在 array_data 中有 15 个元素。

我希望能够切片或使用某些其他函数,因此当我使用“限制”20 查询模型时,它会返回第一个集合及其 array_data 中的所有 10 个元素,以及第二个集合及其 array_data 中等于“限制”20 的前 10 条记录。

这对于 Mongo 来说可能吗?

最佳答案

使用unwind解构文档,然后对其进行限制并再次分组

var query = Model.aggregate(
{ $match: { id: id } },
{ $sort: { created: -1 } },
{ $unwind: '$array_data' },
{ $limit: 20 },
{
$group: {
_id: {
name:'$name',
number: '$number',
created: '$created',
status: '$status',
time: '$time'
},
array_data: {
$push: '$array_data'
}
}
},
{
$project: {
name: '$_id.name',
number: '$_id.number',
created: '$_id.created',
status: '$_id.status',
time: '$_id.time',
array_data: 1,
_id: 0
}
}
)

关于javascript - 蒙戈 : Limit returned records to an incremental count on slice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139011/

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