【发布时间】:2020-01-25 18:40:06
【问题描述】:
我对聚合框架的查询有疑问。 给定一个包含以下文档的集合:
db.testSize.insert([{
"internalId" :1,
"first" : {
"second" : [
{
"value" : 1
}
]
}
}])
这个聚合:
db.testSize.aggregate([
{ $addFields: { tmpSize: { $strLenCP: { $ifNull: [ { $toString: "$first.second.value" }, "" ] } } } },
])
返回此错误:
{
"message" : "Unsupported conversion from array to string in $convert with no onError value",
"ok" : 0,
"code" : 241,
"codeName" : "ConversionFailure",
"name" : "MongoError"
}
现在,解决这个问题的方法是通过以下方式使用 unwind:
db.testSize.aggregate([
{ $unwind: "$first.second"},
{ $addFields: { tmpSize: { $strLenCP: { $ifNull: [ { $toString: "$first.second.value" }, "" ] } } } },
])
但我的要求是为具有各种形状和可能嵌套数组的文档创建一个通用方法。 由于这个错误https://jira.mongodb.org/browse/SERVER-6436 似乎无法在数组中展开数组,那么如何解决这个问题?
有办法吗?
一些上下文:
- 我无法在聚合之前更改文档结构
- 我不知道数组在“字段层次结构”中的位置,例如第一个是数组还是第二个
提前致谢
【问题讨论】:
-
您能详细说明一下吗?在我的情况下,我无法找到使用 $map 的方法,因为我需要的是一种通用方法,正如我所写的那样
-
检查新答案
标签: mongodb aggregation-framework