【发布时间】:2022-02-10 18:23:54
【问题描述】:
我在数据库中有一个集合,我试图从中检索一些数据,当$orderID 有字符串元素时查询工作正常,但是当 $orderID 在数组中有一些数字时查询失败,并且它正在抛出
query failed: (Location40395) PlanExecutor error during aggregation :: caused by :: $arrayToObject requires an array of key-value pairs, where the key must be of type string. Found key type: double
我认为当我们将 orderID 保存为数字时一定有一些旧数据,这就是为什么它在某些日期范围内失败
查询
{
"Order_Details": {
"$map": {
"input": {
"$objectToArray": {
"$arrayToObject": {
"$zip": {
"inputs": [
"$orderID",
"$total_value_of_order"
]
}
}
}
},
"as": "el",
"in": {
"orderID": "$$el.k",
"total_value_of_order": "$$el.v"
}
}
}
}
我正在尝试将 el.k 类型转换为我正在使用的字符串 $toString 但似乎无法正常工作,我尝试的方式是
{
"as": "el",
"in": {
"orderID": {
"$toString": "$$el.k"
},
"total_value_of_order": "$$el.v"
}
}
示例集合
[
{
"_id": ObjectId("5e529ee5f8647eb59e5620a2"),
"visitID": "dVmy7flXFHzzkn9HiMt8IoWvthoTZW",
"date": ISODate("2022-02-08T16:29:13.413Z"),
"control": true,
"orderID": [
122343242
],
"target": "test",
"total_value_of_order": [
60
]
}
]
【问题讨论】:
标签: javascript node.js mongodb