我正在使用MongoDB(mongoose),我希望通过数组大小(降序)对元素进行排序。我已经尝试了很多方法,但我不明白它是如何工作的。我想避免手动对结果进行排序(我的意思是使用JS),我宁愿让MongoDB来做。你能帮助我吗?
下面是我的代码:
users = await userModel.find({ UserStatus: "Success" })
.sort({ "Progression.Room.RoomActorLikes": { "length": -1 } })
.skip((request.pageindex) * request.pagesize)
.limit(request.pagesize);
字符串
Here is an example that could be the first result:
The second would be:的
等等......
提前感谢您的回答!
1条答案
按热度按时间odopli941#
那这个呢
字符串
详细示例:
型
解释说:
1.$match ->在这里减少的文件数量的那些是与用户状态->成功在$match阶段或如果有更多的条件更好,所以需要在以后的阶段处理的文件数量要小.(最好是有这个字段的索引,所以如果你有太多的文件,这以减少处理尽可能多)
1.$addFields ->创建新的field len,它将包含文档数组中数组元素的数量,以便稍后排序。
1.$sort ->根据数组计数对文档进行降序排序。
1.$skip作为分页操作的一部分显示的文档数。
1.$限制分页操作中显示的文档数量。
1.$project用于在最终输出中不需要时删除len字段(这是可选的,因为您可能不会从应用程序端考虑它)
playground
一个更安全的选项$addFields->$size,防止在缺少RoomActorlikes或缺少主文档中的房间字段的情况下出现错误消息:
型
playground safe option ( checking if RoomActorLikes exist )的