mongodb - 如何按猫鼬中相关对象的数量排序
问题描述
我有两个模型,一个User
模型和一个Post
模型,Post
模型有一个ref
引用User
模型的字段,我不想在架构中创建嵌入式Post
架构User
。
我想按他们拥有User
的 s 数量来订购 s Post
,我将如何在 mongoose/and 或 node mongo 驱动程序中执行此操作。
解决方案
如果没有您的架构示例,很难知道您到底想要什么,但我认为这是您需要的:
首先,如果在您的模式中您有一个来自评论总数User
的数组,那将会更容易。_id's
因为这样你就不会了$lookup
。
但是,您可以使用以下查询:
- 首先
$lookup
加入这两个集合。在这第一阶段,您将创建一个字段,称为post
连接数据所在的位置。 - 然后
$set
替换大小的值(即用户有多少帖子) - - 最后
$sort
对数据进行排序。
db.User.aggregate([
{
"$lookup": {
"from": "Post",
"localField": "_id",
"foreignField": "user",
"as": "post"
}
},
{
"$set": {"post": {"$size": "$post"}}
},
{
"$sort": {"post": -1}
}
])
这里的例子
推荐阅读
- swift - SceneKit SCNLookAtConstraint 不影响方向
- javascript - 三.js | 吐温.js | 平稳旋转相机
- mysql - 计算最近 6 个月的帐户数量和歌曲数量
- javascript - 让孩子们的道具相互独立——因为它们来自同一个 .map
- mysql - Mysql 使用检查约束向表中添加新列
- proxy - RPi - Squid 代理:分配 Squid 端口以使用特定网络接口进行传出流量
- c - c中字符串字符的唯一性
- python - 如何在 VS Code 中为每个项目设置 PYTHONPATH?
- javascript - 如何有条件地将一组道具添加到反应组件?
- css - 在LESS的同一个选择器中嵌套不同的类