Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
MongoDB子查询_Mongodb_Join_Subquery_Aggregate_Lookup - Fatal编程技术网

MongoDB子查询

MongoDB子查询,mongodb,join,subquery,aggregate,lookup,Mongodb,Join,Subquery,Aggregate,Lookup,我正在尝试用mongoDB编写一个子查询 我希望访问与此SQL语句类似的数据: SELECT * FROM pull_request_comment WHERE pull_request_id IN(SELECT id FROM pull_request WHERE repoid=32443 AND login="xyz"); 我有两套 两者的定义如下 db.pull_request.find().pretty() db.pull_request_comme

我正在尝试用mongoDB编写一个子查询

我希望访问与此SQL语句类似的数据:

SELECT * 
FROM pull_request_comment 
WHERE pull_request_id IN(SELECT id FROM pull_request                
WHERE repoid=32443 AND login="xyz");
我有两套 两者的定义如下

db.pull_request.find().pretty()

db.pull_request_comment.find().pretty()

我尝试过查找,但它返回所有数据。它没有按预期工作

db.pull_request_comment.aggregate([
   {

      $lookup:
         {
           from: "pull_request",
           let: { prid: "$pullrequestid"},
           pipeline: [
            {$unwind:"$prs"},
            { $match:
                        { $expr:
                            { $eq: [ "prs.id",  "$$prid" ] }                            
                        }
            },
              { $match:
                 { $expr:
                    { $and:
                       [
                         { $eq: [ "repoid",'32443'] },
                         { $eq: [ "prs.user.login",  "chirag" ] },
                       ]
                    }
                 }
              },
           ],
           as: "stockdata"
         }
    }
])
我做错了什么

有什么想法吗


提前谢谢。

我已经重新编写了查询

db.pull_request_comment.aggregate([
    {
        $lookup: {
            from: "pull_request",
            let: { prid: "$pullrequestid" },
            pipeline: [
                {
                    $match: { "repoid": "32443"}
                },
                { $unwind: "$prs" },
                {
                    $match: {
                        $expr: { $eq: ["$prs.id", "$$prid"] }
                    }
                },
                {
                    $match: {"prs.user.login": "xyz"}
                },
            ],
            as: "stockdata"
        }
    }
])

我已重新编写了查询

db.pull_request_comment.aggregate([
    {
        $lookup: {
            from: "pull_request",
            let: { prid: "$pullrequestid" },
            pipeline: [
                {
                    $match: { "repoid": "32443"}
                },
                { $unwind: "$prs" },
                {
                    $match: {
                        $expr: { $eq: ["$prs.id", "$$prid"] }
                    }
                },
                {
                    $match: {"prs.user.login": "xyz"}
                },
            ],
            as: "stockdata"
        }
    }
])

您的repoid与string或NumberLong匹配吗?@srinivas y是的,它的数字长度不是问题,我也尝试过不使用单引号。您的repoid与string或NumberLong匹配吗?@srinivas y是的,它的数字长度不是问题,我尝试过不使用单引号。谢谢,但不起作用。它返回集合中的所有数据。等等,我会解决这个问题。它仍然返回所有数据。谢谢,但不起作用。它返回集合中的所有数据。等等,我会解决这个问题。它仍然返回所有数据。
db.pull_request_comment.aggregate([
    {
        $lookup: {
            from: "pull_request",
            let: { prid: "$pullrequestid" },
            pipeline: [
                {
                    $match: { "repoid": "32443"}
                },
                { $unwind: "$prs" },
                {
                    $match: {
                        $expr: { $eq: ["$prs.id", "$$prid"] }
                    }
                },
                {
                    $match: {"prs.user.login": "xyz"}
                },
            ],
            as: "stockdata"
        }
    }
])