gpt4 book ai didi

mysql - 如何将字段与Mongo中子文档的另一个字段进行匹配

转载 作者:行者123 更新时间:2023-11-29 12:13:28 25 4
gpt4 key购买 nike

mlb_players 是一个集合,其中 dataId 作为字段,teamData 作为另一个子文档,其中包含 teamIddataId

等效的 MySql:SELECT p.playerId FROM mlb_players p INNER JOIN mlb_teams t ON p.dataId=t.dataId

我想将此 mysql 查询转换为 mongoDB 的等效项。

目前我正在使用下面的 mongo 查询,但出现错误:

db.getCollection('mlb_players').find({$where: "this.dataId == this.teamData.dataId"});

但是它给了我 0 条记录,但是在 mysql 中使用相同的数据却给了我 50 条记录。

作为引用,文档 1 如下所示:

{
"_id" : ObjectId("55574d05e03ce60f64797432"),
"dataId" : "87c484cc-e672-4a34-ab02-cc29101d8a52",
"teamId" : "TB",
"posId" : "SS",
"playerName" : "Nick Franklin",
"playerNameAbbr" : "N. Franklin",
"playerJersey" : 2,
"playerStatus" : "D",
"playerSalary" : 5500,
"salarySuggest" : 0,
"playerProj" : 0.0,
"playerAvg" : 0.0,
"manualSalary" : 1,
"playerImg" : 0,
"hasImage" : 0,
"used" : 0,
"teamData" : {
"_id" : ObjectId("554239eb4e7235204100002a"),
"teamId" : "TB",
"dataId" : "87c484cc-e672-4a34-ab02-cc29101d8a52",
"teamName" : "Tampa Bay Rays",
"teamAbbr" : "TB"
}
}

请提出建议。提前致谢

最佳答案

您可以使用aggregation$eq运算符

db.mlb_players.aggregate(
[
{ $project: { "m": { $eq: [ "$dataId", "$teamData.dataId" ]}}},
{ $match: { "m": true }},
{ $project: { "_id": 1 }}
]
)

关于mysql - 如何将字段与Mongo中子文档的另一个字段进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com