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