MongoDB子查询
我正在尝试用mongoDB编写一个子查询 我希望访问与此SQL语句类似的数据: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
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"
}
}
])