使用$ project在MongoDB聚合查询中包含一个Javascript变量

时间:2013-08-05 20:33:21

标签: javascript mongodb aggregation-framework

我有一个javascript循环,它执行循环遍历javascript哈希并在我的集合上调用聚合的特定任务。

我能够在$ match函数的聚合查询中插入一个变量,但我不能用于$ project函数。

我希望匹配散列键,然后将哈希值与我刚刚匹配的文档中已有的值一起显示。这些哈希值和标签事先未在文档中。

var cmtss = {};

for (var item in cursor['result'])
{
    var prov = cursor['result'][item]['prov_group'];
    cmtss[cursor['result'][item]['name']] = prov;
}

for (var item in cmtss)
{
    var cmts = "$" + cmtss[item];

    result = db.modems.aggregate( { $match : { cmts: item } } ,
                                  { $project : {
                                       ip : "$ip",
                                       model : "$model",
                                       cmts : "$cmts",
                                       prov_group : cmts } } );
    printjson(result);
}

如您所见,我包含$ match,我希望cmts字段与提供的密钥匹配。但是对于那些匹配,我想显示3个字段,包括我添加的全新字段,但其值是来自cmtss的哈希值。在值之前我尝试使用和不使用$运算符。它根本不在结果文档中显示prov_group。

我是否需要以某种方式使用$ add?

1 个答案:

答案 0 :(得分:1)

我明白了。 ...

{ $project : {
          ip : "$ip",
          model : "$model",
          cmts : "$cmts",
          prov_group : { '$substr': [$prov, 0, 5] } } } );