javascript - 查询文档以遍历 Array 并使用 $cond 对 mongodb 中 JSON 的特定属性求和
问题描述
我有一个JSON
这样的数组:
let x = [{"Data":"Chocolate","Company":"FiveStar"},{"Data":"Biscuit","Company":"Parle"},{"Data":"Chocolate","Company":"DairyMilk"}]
这是一个示例数组JSON
。我想要做的是如何使用 MongoDB$cond
来计算所有“数据”等于巧克力的字段?
解决方案
如果你想坚持,$cond
那么你可以像这样运行查询:
db.collection.aggregate([
{
$match: {
Data: "Chocolate"
}
},
{
$group: {
_id: "$Data",
count: {
$sum: {
$cond: [
{
$eq: [
"$Data",
"Chocolate"
]
},
1,
0
]
}
}
}
}
])
您可以在此处查看此查询的结果。
您可以看到,首先我使用$matchData
获得了所有等于 "Chocolate" 的元素。
稍后,我们可以使用$sum来获取与$cond条件匹配的元素的计数,1
如果相等则返回,否则返回0
。
在这种情况下,无论如何,我们只剩下Data
等于“巧克力”的那个。
当然,简单地运行会更快更容易:
db.collection.aggregate([
{
$match: {
Data: "Chocolate"
}
},
{
$count: "count"
}
])
这个查询的例子在这里。
推荐阅读
- laravel - 缺少路线 bus.edit 所需的参数
- node.js - 将nodejs程序的输出重定向到文件时编码错误(windows 10 powershell可能的问题)
- scala - 如果组的任何行具有 0 值,我将如何使用 ANY 条件进行过滤?
- java - "GeorgeNotFound" 的 MinecraftShocker 插件如果你有这个错误:jSSC-2.8_x86_64.dll+0xb5db,如何修复
- next.js - Next.js 和 Styled Components 在刷新时服务器和客户端之间不同步
- javascript - 在本地插件(Strapi)中使用 .env
- javascript - javascript: for void 在 for 循环的上下文中是什么意思?
- tensorflow - 如何在 python 3.7.9 中使用 Tensorflow 2.0 版本并使用置换功能?
- reactjs - React 应用程序“找不到 index.html 文件”
- r - 如何删除officer doc中自动添加的blanc页面?