小编use*_*527的帖子

Mongo DB 聚合组性能

我对 mongo DB 还很陌生,正在为我们的一个应用程序进行试验。我们正在尝试实现 CQRS 和查询部分,我们正在尝试使用 node.js 和命令部分,我们正在通过 c# 实现。

我的一个集合中可能有数百万个文档。我们会有一个scenarioId字段,每个场景可以有大约 200 万条记录。

我们的用例是比较这两个场景数据,并对场景的每个字段进行一些数学运算。例如,每个场景都可以有一个属性avgMiles,我想计算这个属性的差异,用户应该能够过滤这个差异值。由于我的设计是将两个场景数据保存在单个集合中,因此我尝试按场景 ID 进行分组并进一步对其进行投影。

我的文档示例结构如下所示。

{ 
    "_id" : ObjectId("5ac05dc58ff6cd3054d5654c"), 
    "origin" : {
        "code" : "0000", 
    }, 
    "destination" : {
        "code" : "0001", 
    }, 
    "currentOutput" : {
        "avgMiles" : 0.15093020854848138, 
    },
    "scenarioId" : NumberInt(0), 
    "serviceType" : "ECON"
}
Run Code Online (Sandbox Code Playgroud)

当我分组时,我会根据origin.codedestination.codeserviceType属性对其进行分组。

我的聚合管道查询如下所示:

  db.servicestats.aggregate([{$match:{$or:[{scenarioId:0}, {scenarioId:1}]}},
    {$sort:{'origin.code':1,'destination.code':1,serviceType:1}},
    {$group:{
      _id:{originCode:'$origin.code',destinationCode:'$destination.code',serviceType:'$serviceType'},
          baseScenarioId:{$sum:{$switch: {
                branches: [
                  {
                    case: { $eq: [ '$scenarioId', 1] },
                    then: '$scenarioId' …
Run Code Online (Sandbox Code Playgroud)

c# mongoose mongodb node.js mongodb-query

2
推荐指数
1
解决办法
3361
查看次数

标签 统计

c# ×1

mongodb ×1

mongodb-query ×1

mongoose ×1

node.js ×1