Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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 Match不在MongoDB中工作。Match正在返回一个空数组_Javascript_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

Javascript Match不在MongoDB中工作。Match正在返回一个空数组

Javascript Match不在MongoDB中工作。Match正在返回一个空数组,javascript,mongodb,mongoose,aggregation-framework,Javascript,Mongodb,Mongoose,Aggregation Framework,我正在尝试创建一个聚合管道。代码的开头工作正常。但是当涉及到$match时,代码不返回任何内容。这是我的密码: var userId = req.params.UserId const measure = await Measure.aggregate([ { $project: { user: 1, creationDate: 1, WaterConsumption: 1 }

我正在尝试创建一个聚合管道。代码的开头工作正常。但是当涉及到$match时,代码不返回任何内容。这是我的密码:

    var userId = req.params.UserId
    const measure = await Measure.aggregate([
        {
            $project: {
                user: 1, creationDate: 1, WaterConsumption: 1
            }
        }, 
        {
            $match: {
                user: userId
            }
        },
        {
            $group: {
                _id: {
                    $dayOfMonth: "$creationDate"
                },
                waterConsumption: {$sum :  "$WaterConsumption"}
            }
        }
    ]);
    return res.json({measure})
我的数据是:

{
  "measures": [
    {
      "creationDate": "2021-03-19T10:25:05.674Z",
      "_id": "605870bffa87a605bf2a983a",
      "avgPower": 8241,
      "WaterConsumption": 22,
      "avgTemperature": 45,
      "shower": "5fb56ce7734b7e04b9c97c9b",
      "user": "5f6cb0496a8c5a0deaa1a746"
    },
    {
      "creationDate": "2021-03-19T10:25:05.674Z",
      "_id": "605870d9fa87a605bf2a983b",
      "avgPower": 8241,
      "WaterConsumption": 22,
      "avgTemperature": 45,
      "shower": "5fb56ce7734b7e04b9c97c9b",
      "user": "5f6cb0496a8c5a0deaa1a746"
    },
    {
      "creationDate": "2021-03-17T10:25:05.674Z",
      "_id": "605870ebfa87a605bf2a983c",
      "avgPower": 4300,
      "WaterConsumption": 32,
      "avgTemperature": 28,
      "shower": "5fb56d04734b7e04b9c97c9c",
      "user": "5f6cb0496a8c5a0deaa1a746",
    }...
  ]
代码在达到$match之前一直运行良好。如果我控制台我的userId,它是一个用户值为“5f6cb0496a8c5a0deaa1a746”的字符串。我不知道为什么$match不起作用。$组工作正常。
我试图将匹配项交换为$match:{user:req.params.UserId},但代码始终返回空数组。

您正在尝试将字符串与ObjectID匹配,这就是您的
$match
无法工作的原因

使用ObjectID的工作演示-

例如-userId-
5f6cb0496a8c5a0deaa1a746
将转换为
ObjectId(“5f6cb0496a8c5a0deaa1a746”)


无法使用字符串-

您正在尝试将字符串与ObjectID匹配,这就是为什么您的
$match
无法工作的原因

使用ObjectID的工作演示-

例如-userId-
5f6cb0496a8c5a0deaa1a746
将转换为
ObjectId(“5f6cb0496a8c5a0deaa1a746”)


不使用字符串-

这就是我的同伴!工作得很有魅力,谢谢你的帮助。这就是我的同伴!工作很有魅力,谢谢你的帮助。
const mongodb = require('mongodb');
const ObjectID = mongodb.ObjectID;
const userId = ObjectID(req.params.UserId); // convert your userid to ObjctedID format