mongodb聚合功能谷歌云控制台

时间:2016-08-11 16:22:11

标签: node.js mongodb mongoose google-cloud-platform meanjs

关于mongodb如何为我的MEAN.js应用程序工作,我有一个奇怪的问题。对于MEAN app来说,这不是一个问题,而是直接针对MONGODB。

在我的本地计算机(Win 8.1)和VM(Ubuntu服务器14.x)上使用mongoose的聚合函数工作正常,但当我将项目与相同版本的Mongodb上传到Google云虚拟实例(2个CPU或4 CPU)一切正常,直到触发聚合功能。我没有从服务器显示错误,这就是为什么奇怪... (MongoDB v3.2.8或3.2.6,都适用于本地)我尝试了3种不同的Google Cloud VI,但结果却相同......

我的查询是关于计算每天的记录(如果找到)。这是我的疑问:

    { "$match": { '$and':
           [ { firm: ObjectId('574e81be2153f45b0c3d6811') },
             { created:
                { '$gte': ISODate('Tue Jul 12 2016 15:56:04 GMT+0000 (UTC)'),
                  '$lte': ISODate('Thu Aug 11 2016 15:56:04 GMT+0000 (UTC)') } },
             { transactionStatus: 1 } ] }
        },
        { "$group": {
          "_id": {
            "$add": [
              { "$subtract": [
                { "$subtract": [ "$created", new Date(0) ] },
                { "$mod": [
                  { "$subtract": [ "$created", new Date(0) ] },
                  OneDay
                ] }
              ] },
              new Date(0)
            ]
          },
          "count": { "$sum": 1 }
        } 
    }

我尝试将MONGODB版本切换到2.6或类似的东西,但仍然没有结束。我在这里或其他任何地方找不到类似的东西,这就是我在这里问的原因。 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不知道为什么,但是如果我将我正在执行的查询更改为聚合:

{ '$and':
  [ { created:
      { '$gte': ISODate('Tue Jul 12 2016 15:56:04 GMT+0000 (UTC)'),
        '$lte': ISODate('Thu Aug 11 2016 15:56:04 GMT+0000 (UTC)') } },
    { transactionStatus: 1 },
    { firm: ObjectId('574e81be2153f45b0c3d6811') }
  ] 
}

由此:

{ '$and':
  [ { firm: ObjectId('574e81be2153f45b0c3d6811') },
    { created:
      { '$gte': ISODate('Tue Jul 12 2016 15:56:04 GMT+0000 (UTC)'),
        '$lte': ISODate('Thu Aug 11 2016 15:56:04 GMT+0000 (UTC)') } },
    { transactionStatus: 1 } 
  ] 
}

一切正常......有人可以向我解释一下吗?无论如何,这个话题可以关闭。