node.js - Mongodb根据属性将结果拆分为数组

标签 node.js mongodb mongodb-query

数据如下所示 - 在三个不同的文档中:

{ "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/

相关文章:

javascript - Node.js 应用程序中的阻塞功能

javascript - 期望不正确的智能感知方法

嵌套对象中的 MongoDB 过滤器数组元素

node.js - Mongoose 更新不更新

MongoDb:如何对日期字段进行聚合、分组和排序?

node.js - 指定 Yarn 用于运行脚本的 shell

javascript - 如何将对象数组与 sinon.js 匹配?

php - 如何使用 Phalcon 框架加入 2 个集合?

javascript - mongodb查询: getting N results with a filter on a field

arrays - 所有数组元素的MongoDB唯一索引