Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongo db聚合如何获取所有字段_Javascript_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Javascript mongo db聚合如何获取所有字段

Javascript mongo db聚合如何获取所有字段,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我正在尝试写入聚合总平均持续时间。 我得到了输出,但不是所有字段。 如何获取结果中的所有字段 任何人都可以推荐我 db.lights.aggregate( { $match: { CREATE_DATE: { $gte: ISODate("2018-01-24T20:05:30.000Z"), $lt: ISODate("2018-02-24T20:05:30.000Z") } } },

我正在尝试写入聚合总平均持续时间。
我得到了输出,但不是所有字段。 如何获取结果中的所有字段

任何人都可以推荐我

db.lights.aggregate(
   { 
     $match: { 
       CREATE_DATE: { 
         $gte: ISODate("2018-01-24T20:05:30.000Z"),
         $lt: ISODate("2018-02-24T20:05:30.000Z") 
       }  
     } 
   },{ $addFields: { 
      offduration: { 
        $divide: [
          { $subtract: ["$RECEIVEDDATE", "$CREATE_DATE"] }, 
                     3600000
          ]         
        }     
     } 
   }, { "$group": { 
      _id: { 
            SWITCHID: "$SWITCHID", 
            STATUS: "$STATUS"         
      },         
      avgduration: { $avg: "$offduration" },         
      SWITCHID: { $first: "$SWITCHID" },         
      CREATE_DATE: { $first: "$CREATE_DATE" },         
      RECEIVEDDATE: { $first: "$RECEIVEDDATE" },         
      STATUS: { $first: "$STATUS" },         
      offduration: { $first: "$offduration" },     
    } }, 
    { $project: {         
      _id: 0,         
      SWITCHID: 1,         
      CREATE_DATE: 1,         
      RECEIVEDDATE: 1,         
      STATUS: 1,         
      avgduration: '$avgduration',         
      offduration: '$offduration'     
    } },
    {"$group" : {     
      _id: { SWITCHID: "$SWITCHID" },     
      on_minus_off: { 
        $sum:{ "$cond": [ 
          { "$eq": ["$STATUS", "LIGHTS OFF"] },         
            "$avgduration", 
          { $subtract: [ 0, "$avgduration" ] }  
             ]
        }
      } 
    }
  }
)
您希望为第一个管道中的必填字段添加
“$project”
。然后你想在
$group
管道中这样应用

//并在$group中添加以下内容

    requiredField1 : {
        $first: "$requiredField1" // Projected Name in Projection Section 
                   },

你能把这个问题正确地编排格式吗。因此,我建议您尝试使用更简单的聚合查询,并在得到所需内容时增加其复杂性。
    requiredField1 : {
        $first: "$requiredField1" // Projected Name in Projection Section 
                   },
db.lights.aggregate({
        $match: {
            CREATE_DATE: {
                $gte: ISODate("2018-01-24T20:05:30.000Z"),
                $lt: ISODate("2018-02-24T20:05:30.000Z")
            }
        }
    },
    {
        $addFields: {
            offduration: {
                $divide: [
                    {
                        $subtract: [
                            "$RECEIVEDDATE",
                            "$CREATE_DATE"
                        ]
                    },
                    3600000
                ]
            }
        }
    },
    {
        "$group": {
            _id: {
                SWITCHID: "$SWITCHID",
                STATUS: "$STATUS"
            },
            avgduration: {
                $avg: "$offduration"
            },
            SWITCHID: {
                $first: "$SWITCHID"
            },
            CREATE_DATE: {
                $first: "$CREATE_DATE"
            },
            RECEIVEDDATE: {
                $first: "$RECEIVEDDATE"
            },
            STATUS: {
                $first: "$STATUS"
            },
            offduration: {
                $first: "$offduration"
            },
            
        }
    },
    {
        $project: {
            _id: 0,
            SWITCHID: 1,
            CREATE_DATE: 1,
            RECEIVEDDATE: 1,
            STATUS: 1,
            avgduration: '$avgduration',
            offduration: '$offduration'
        }
    },
    {
        "$group": {
            _id: {
                SWITCHID: "$SWITCHID"
            },
           requireFiled1 : {
                $first: "$requireFiled1"
            },
           
            on_minus_off: {
                $sum: {
                    "$cond": [
                        {
                            "$eq": [
                                "$STATUS",
                                "LIGHTS OFF"
                            ]
                        },
                        "$avgduration",
                        {
                            $subtract: [
                                0,
                                "$avgduration"
                            ]
                        }
                    ]
                }
            }
        }
    })