typescript - 减去两个数组的大小
问题描述
我有以下结构:
[
{
name: "A",
upvotes: [
"a",
"b"
],
downvotes: [
"a",
"b",
"c"
]
},
{
name: "B",
upvotes: [
"a"
],
downvotes: [
"a",
"b",
"c"
]
}
]
我想重新获得投票最多的对象。投票最多的对象是具有最大(size(upvotes) - size(downvotes))
价值的对象。
例如,这里是 A ( 2 - 3 = -1)
。
如何使用 mongodb 聚合来做到这一点?
在此先感谢您的帮助!
解决方案
查询添加一个有差异的字段,然后按降序排序,删除该字段,并取顶部结果(差异值最大的文档)
db.collection.aggregate([
{
"$addFields": {
"diff": {
"$subtract": [
{
"$size": "$upvotes"
},
{
"$size": "$downvotes"
}
]
}
}
},
{
"$sort": {
"diff": -1
}
},
{
"$unset": [
"diff"
]
},
{
"$limit": 1
}
])
推荐阅读
- python - 如何从python中列表的字符串名称获取对列表的引用
- laravel - 雄辩的多对多总和等于列值
- r - 将txt文件导入或解析到R中的数据框
- mysql - Docker mysql 使用主机上现有的 /var/lib/mysql
- ruby-on-rails - 当发件人显示时,Docusign Receiver View 不显示锚标记数据
- kubernetes - Pod 中最多可以运行多少个容器?
- mysql - 跨表连接时如何最好地索引/解构 json 对象?
- google-cloud-platform - Spring 云流应用程序停止(GCP PubSub)
- simulink - 如何解决凸优化?
- oracle - 如何提高 Oracle 插入性能