当前位置: 首页 > 面试题库 >

环回上的MongoDB聚合

楚洋
2023-03-14
问题内容

如何获得Loopback PersistedModel的总和?

似乎没有有关如何实现该目标的文档。

如果可能的话,我想避免不得不查找所有行并将其汇总到Node.js中。

更新

从https://github.com/strongloop/loopback/issues/890尝试示例

var bookCollection = Book.getDataSource().connector.collection(Book.modelName);

我有一个错误

throw new Error('MongoDB connection is not established');

如何获取集合的句柄以在MongoDB集合上手动运行聚合查询?


问题答案:

最终设法使其工作。大多数示例都忽略了这一connect()部分。

我的工作代码:

Book.getDataSource().connector.connect(function(err, db) {
  var collection = db.collection('Book');
  var author = Book.getDataSource().ObjectID(authorId);
  collection.aggregate([
    { $match: { authorId: author } },
    { $group: {
      _id: authorId,
     total: { $sum: "$price" }
    }}
  ], function(err, data) {
    if (err) return callback(err);
    return callback(null, data);
  });
});


 类似资料:
  • 我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。

  • 假设我有以下JSON结构,我希望按性别分组,并希望在同一字段中返回多个文档值: 现在我知道我可以做这样的事情,但是我需要把年龄和名字合并到一个字段中。

  • 我第一次使用mongo。我正在尝试使用下面的查询聚合集合中的一些文档。相反,查询返回一个具有键“result”的对象,该键包含一个包含符合$match的所有文档的数组。 下面是查询。 以下是集合中的示例文档: 我正在尝试将所有内容按uid进行分组,每个组的总和。。。实现这一目标的正确方法是什么?

  • 主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr

  • 并给我带来这些结果: {“_id”:{“name”:“city1”},“count”:212} {“_id”:{“name”:“city2”},“count”:1200} https://hexdocs.pm/mongodb/readme.html#贡献 提前谢了。

  • 我有一种情况,我需要根据一个数组值执行一个group by操作,该数组值将字段值的出现次数相加。然后对计数进行过滤,并准备结果,以便根据条件显示结果。从本质上讲,文档被转换回如果您只使用find函数就会呈现的方式。由于matchedDocuments数组中收集的项的数量,我遇到了临时文档太大的问题。任何关于如何改进这一点的建议都将是有益的。 以下是一些示例文档和基于上述标准的预期结果: