我有一个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?
答案 0 :(得分:1)
我明白了。 ...
{ $project : {
ip : "$ip",
model : "$model",
cmts : "$cmts",
prov_group : { '$substr': [$prov, 0, 5] } } } );