【发布时间】:2017-08-01 15:24:06
【问题描述】:
{
"_id" : ObjectId("59786a62a96166007d7e364dsadasfafsdfsdgdfgfd"),
"someotherdata" : {
"place1" : "lwekjfrhweriufesdfwergfwr",
"place2" : "sgfertgryrctshyctrhysdthc ",
"place3" : "sdfsdgfrdgfvk",
"place4" : "asdfkjaseeeeeeeeeeeeeeeeefjnhwklegvds."
}
}
我的收藏中有数千个。我需要查看所有其他数据并执行以下操作
- 检查它是否存在(在某些记录中,我有 place1 而不是 place4)
- 查找最长的记录(以字符串长度计)
输出必须看起来像这样(显示最长的字符数)
{
place1: 123,
place2: 12,
place3: 17
place4: 445
}
我正在使用 Mongodb 3.2.9,因此无法访问新的聚合函数。但我确实有 Mongodb shell
编辑:要明确的是,我想要整个系列中最长的。因此,可能有 1000 个文档,但整个集合中每个字段只有一个长度最长的结果。
【问题讨论】:
-
如果无法访问
$strLenBytes或$strLenCP,则需要使用mapReduce并使用JavaScript 函数返回每个属性的长度。您是否要求整个集合中的“每个键的最长长度”,或者“只是每个文档的每个键的长度”,甚至输出应该是什么,都不是很清楚。例如,您显示一个包含 4 个可能键且仅输出 3 个键的文档。 -
@NeilLunn 我已经编辑了我的答案
标签: javascript mongodb mapreduce