javascript - 传递一个值来访问对象 - Mongodb
问题描述
在 $group 完成后,我在 $_id 中有一个数字。
但是,我需要这个值来访问一个对象并返回你的字符串。
const week = {
1: 'Domingo',
2: 'Segunda',
3: 'Terça',
4: 'Quarta',
5: 'Quinta',
6: 'Sexta',
7: 'Sábado',
}
db.trips.aggregate(
[
{
$group: {
_id: {
$dayOfWeek: "$startTime"
},
qtd: {
$sum: 1
}
}
},
{
$project: {
diaDaSemana: week["$_id"],
total: "$qtd",
}
}
]
);
我尝试了很多次,但没有奏效。
感谢帮助。
解决方案
聚合管道不像 javascript 那样取消引用对象。
如果您将天数作为数组传递,则在$project
阶段中,您可以使用$arrayElemAt来获取相应的字符串。
您将需要第零个元素来偏移索引,以便“Domingo”位于索引 1:
const week = [
'Nada',
'Domingo',
'Segunda',
'Terça',
'Quarta',
'Quinta',
'Sexta',
'Sábado',
]
然后在$project
阶段:
diaDaSemana: {$arrayElemAt: [week, "$_id"]},
推荐阅读
- java - Java Cucumber 自定义对象类型参数
- javascript - 通过正则表达式 WordPress 修改菜单项的第一个字母不起作用
- android - 外部图像未在 Android 中显示
- java - Java string.split 与 C# Regex.split - 限制为一定数量的字段
- python - Dask 数据框的值
- javascript - Raspberry Pi Zero W 上的 Node.js,依赖项不会自动下载
- xamarin.forms - Visual Studio 2019 无法在 Watch 窗口中查看应用级别定义的静态变量
- javascript - 如何使用其中的元素调整画布的大小?
- python - 聚类以从计数数据中查找最可能的时间段
- arrays - Perl 数组循环