2017-10-05 36 views
0

的数据看起来是这样的 - 在三个不同的文件:MongoDB的拆分结果阵列基于财产

{ "location": "X", // LOCATION X 
    "property1": "value", 
    "property2": "value"} 

{ "location": "X", // LOCATION X 
    "property1": "value", 
    "property2": "value"} 

{ "location": "Y", // LOCATION: Y 
    "property1": "value", 
    "property2": "value"} 

的条目应该按位置进行排序,并具有相同位置的所有项目都应该在同阵列。

因此在这个例子中,mongodb查询应返回一个数组,其中的位置等于"X",而另一个数组只有一个位置等于"Y"的条目。

我不想在前台做这项工作。我如何使用Node.jsmongodb

+1

只是一个文件或三个分隔文件的示例数据字段? – barbakini

+0

@barbakini它是三个单独的文件,我更新问题 –

回答

2

您可以使用MongoDB的聚合框架为 https://docs.mongodb.com/manual/reference/operator/aggregation/group/

db.myCol.aggregate(
    [ 
     { 
     $group : { 
      _id : "$location", entries:{$push: {property1:"$property1", property2:"$property2"}} 
    } 
     } 
]) 

如果你想整个对象,更换
{property1:"$property1", property2:"$property2"}

"$$ROOT"

db.myCol.aggregate(
    [ 
     { 
     $group : { 
      _id : "$location", entries:{$push: "$$ROOT"} 
    } 
     } 
])