简体   繁体   English

使用node.js,express,mongo.js和mongodb查询变量不起作用

[英]Query with variables not working using nodejs ,express, mongojs and mongodb

My application needs to get the result of this query (this is already giving the correct result in mongoDb): 我的应用程序需要获取此查询的结果(这已经在mongoDb中提供了正确的结果):

  var denominator = db.getCollection('Transactions').aggregate({
     $group: { 
        "_id": null, 
        "Alltotal": {$sum:"$transAmount"}
     }
   };
  db.getCollection('Transactions').aggregate([{
  $group: { 
    _id: '$merchantCode', 
    total: {
        $sum: { $multiply: ['$transAmount', 100 ]}

 }}},
   { $project: { 

       percentage: { 
         $divide: [ 
           "$total", 
          denominator.toArray()[0].Alltotal
          ] 
      } 
   }
 }
])

Now here is how I am trying to execute it: 现在这是我尝试执行的方式:

  var express = require('express');
  var app = express();
  var mongojs = require('mongojs');
  var dbTransaction = mongojs('dataAnalysisDb',['Transactions']);

  app.get('/Transactions',function(req,res){

  var denominator = dbTransaction.Transactions.aggregate([{
                    $group: {
                           _id: 'null',
                           total: { $sum: '$transAmount' }
                         }
                      }]);
   dbTransaction.Transactions.aggregate([{
    $group: {
        _id: '$mtype',
        total: {
            $sum: { $multiply: ['$transAmount', 100 ]}

     }}},
       { $project: {
           percentage: {
             $divide: [
               "$total",
               denominator.toArray()[0].total
              ]
          }
       }
    },
     { $sort : { _id : 1, posts: 1 } }
   ], function(err,docs){
    console.log(docs); //this is for testing
    res.json(docs);
   });
 });

I think this is not working because I am not sending the variable in the correct way to the server and when I use it on the operation it is not defined. 我认为这不起作用,因为我没有以正确的方式将变量发送到服务器,并且在操作中使用它时未定义。 I will appreciate any suggestion on how to fix it. 我将不胜感激有关如何解决它的任何建议。 Thank you 谢谢

I found a way to solve it and it might not be the best but it worked, I leave it here for whoever else needs it 我找到了解决问题的方法,虽然它可能不是最好的方法,但它确实有效,我将其留给其他需要它的人使用

var denominator =  dbTransaction.Transactions.aggregate([{
     $group: {
           "_id": null,
           "Alltotal": {$sum:"$transAmount"}
     }}]).toArray(function(err,items){
         console.log(items[0].Alltotal); //this is for testiong
         dbTransaction.Transactions.aggregate([{
             $group: {
                 _id: '$mtype',
                 total: {
                     $sum: { $multiply: ['$transAmount', 100 ]}

              }}},
                { $project: {
                    percentage: {
                      $divide: [
                        "$total",
                        items[0].Alltotal
                       ]
                   }
                }
             },
              { $sort : { _id : 1, posts: 1 } }
            ],function(err,docs){
         console.log(docs); //this is for testing
         res.json(docs);
       });
       });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM