【发布时间】:2015-12-09 15:36:39
【问题描述】:
我有一个 MongoDB 文档,看起来有一些数组属性:
{
"_id" : "123456789",
"distance" : [
{
"inner_distance" : 2
},
{
"inner_distance" : 4
},
{
"inner_distance" : -1
}
],
"name" : [
{
"inner_name" : "MyName"
}
],
"entries" : [
{ ... },
{ ... },
],
"property1" : "myproperty1",
"property2" : "myproperty2",
"property3" : "myproperty3"
}
我正在试图弄清楚如何对distance 数组应用转换,以便根据转换函数将其“展平”为标量(我想获得 ` 中每个 inner_distance 元素的绝对值距离,然后取所有这些值中的最小值。)
例如在上面的示例中,distance 数组有:[{"inner_distance" : 2}, {"inner_distance" : 4}, {"inner_distance" : -1}],我需要弄清楚如何应用转换来生成 distance: 1(或者如果更简单,可以使用新属性,例如 @987654327 @。
我想内联执行此操作(这是正确的术语吗?),以便我执行操作并以存储的记录结束:
{
"_id" : "123456789",
"distance" : 1,
"name" : [
{
"inner_name" : "MyName"
}
],
"entries" : [
{ ... },
{ ... },
],
"property1" : "myproperty1",
"property2" : "myproperty2",
"property3" : "myproperty3"
}
有没有人有过类似的经验?我一直在试图弄清楚如何创建一个map-reduce 命令来运行它,但没有运气。
【问题讨论】:
-
所以如果我是正确的,你的查询应该返回
1对吧? -
为了清楚起见,我在问题中添加了更多内容。我正在寻找这个“内联”,意思是更新记录以将
distance值“展平”为1。有意义吗? -
您要更新/修改集合中的文档还是只运行查询以获得此结果?
-
或者...如果可以将查询输出到新集合,那也可以。
标签: mongodb mapreduce mongodb-query aggregation-framework