4

我有一个 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 吗?

4

1 回答 1

1

我想到了。...

{ $project : {
          ip : "$ip",
          model : "$model",
          cmts : "$cmts",
          prov_group : { '$substr': [$prov, 0, 5] } } } );
于 2013-08-07T04:37:40.507 回答