数据如下所示 - 在三个不同的文档中:
{ "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”
。
我不想在前端做这项工作。我该如何在 mongodb
中使用 Node.js
做到这一点?
最佳答案
您可以使用 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"}
}
}
])
关于node.js - Mongodb根据属性将结果拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587002/