从mongoDB变量中获取值

时间:2016-06-10 10:49:00

标签: mongodb aggregation-framework

我从MongoDB查询得到以下结果。

var temp = db.player_level_data.aggregate([
          {$group:{_id:{team_name : "$team_name" , 
                        team_id : "$team_id" , 
                        team_code : "$team_code" }
                  }
           }
           ])

结果如下: -

{ "_id" : { "team_name" : "XYZ", "team_id" : 1, "team_code" : 3 } }
{ "_id" : { "team_name" : "ABC", "team_id" : 19, "team_code" : 35 } }
{ "_id" : { "team_name" : "DEF", "team_id" : 2, "team_code" : 7 } }
{ "_id" : { "team_name" : "IJK", "team_id" : 16, "team_code" : 56 } }
{ "_id" : { "team_name" : "MNO", "team_id" : 15, "team_code" : 110 } }
{ "_id" : { "team_name" : "QRS", "team_id" : 20, "team_code" : 21 } }
{ "_id" : { "team_name" : "TUV", "team_id" : 18, "team_code" : 57 } }

如上所述,结果存储在变量temp中。如何从变量temp中访问单个值。

如何使用相应的team_name获取team_code。如何使用变量temp中的team_name XYZ检索team_code 3。

2 个答案:

答案 0 :(得分:0)

结果是普通的Javascript Array,不能再多了,你必须循环它。

如果您希望MongoDb只选择您想要的teamName,您可以使用$ match作为下一个管道聚合。

答案 1 :(得分:0)

尝试以下内容: -

db.player_level_data.aggregate([
      {$group:{_id:{team_name : "$team_name" , 
                    team_id : "$team_id" , 
                    team_code : "$team_code" }
              }
       }
       ]).toArray(function(err, res)
       {
           var result = [];
          for(var i in res)
          {
              result.push(temp[i]._id)
          }

       }) //Will now return array of objects

现在,你可以通过循环结果数组得到你想要的东西。

希望这会对你有所帮助。