【发布时间】:2015-06-04 11:10:33
【问题描述】:
我在 MongoDB 中有两个集合。第一个包含一些足球教练的信息,第二个包含有关球队的数据。 比如这是一个coach collection的文档:
{
"_id" : ObjectId("556caaac9262ab4f14165fca"),
"name" : "Luis",
"surname" : "Enrique Martinez Garcia",
"age" : 45,
"date_Of_birth" : {
"day" : 8,
"month" : 5,
"year" : 1970
},
"place_Of_birth" : "Gijòn",
"nationality" : "Spanish",
"preferred_formation" : "4-3-3 off",
"coached_Team" : [
{
"team_id" : "Bar.43",
"in_charge" : {
"from" : "01/july/2014"
},
"matches" : 59
},
{
"team_id" : "Cel.00",
"in_charge" : {
"from" : "9/june/2013",
"to" : "30/june/2014"
},
"matches" : 40
},
{
"team_id" : "Rom.01",
"in_charge" : {
"from" : "7/june/2011",
"to" : "10/may/2012"
},
"matches" : 41
}
这是一份团队收藏的文件:
{
"_id" : "Bar.43",
"official_name" : "Futbol Club Barcelona",
"country" : "Spain",
"started_by" : {
"day" : 28,
"month" : 11,
"year" : 1899
},
"stadium" : {
"name" : "Camp Nou",
"capacity" : 99354
},
"palmarès" : {
"La Liga" : 23,
"Copa del Rey" : 27,
"Supercopa de Espana" : 11,
"UEFA Champions League" : 4,
"UEFA Cup Winners Cup" : 4,
"UEFA Super Cup" : 4,
"FIFA Club World cup" : 2
},
"uniform" : "blue and dark red"
}
好吧,我知道 mongo 不支持集合之间的连接。 现在假设我将关于团队集合的查询返回保存在一个名为 x 的数组中。 例如:
var x = db.team.find({_id:"Bar.43"}).toArray()
现在我想使用这个数组 x 来查询教练集合并找到用该 ID 指导球队的教练。 我尝试了一些方法,但它们不起作用:
[1]
db.coach.aggregate([{$unwind:"$coached_Team"},{$match:{"coached_Team.team_id:"x[0]._id"}}])
[2]
db.team.find({"x[0]._id":{$in:coached_Team}})
附:我在论坛里找了类似的问题,答案没有回复我的。
例如,This 不起作用。
【问题讨论】:
-
您是否尝试过不使用
"引号包围x[0]._id的查询,因为这会将其编码为字符串并且不会查找变量的内容。
标签: mongodb mongodb-query