2013-04-25 53 views
1

我有几个文件,看起来像这样:使用乘法聚集与MongoDB的

{ 
     "hostname" : "server1.example.com", 
     "virtual" : true, 
     "processors" : { 
       "cores" : 1, 
       "sockets" : 4 
     } 
} 
{ 
     "hostname" : "server2.example.com", 
     "virtual" : false, 
     "processors" : { 
       "cores" : 2, 
       "sockets" : 2 
     } 
} 

我想输出的主机名,每个文件内核虚拟和总数。我不断收到一个语法错误,让我难住。这是我的查询和语法错误。

c.aggregate({ 
    $project: { 
     hostname: 1, 
     total-cores: {$multiply: ["$processors.sockets", "$processors.cores"]}, 
     virtual: 1, 
     _id: 0 
    } 
}); 
Thu Apr 25 14:12:18 SyntaxError: missing : after property id (shell):1 

从文档判断,这应该工作。我错过了什么?我正在运行MongoDB 2.2.2。

http://docs.mongodb.org/manual/reference/aggregation/project/

回答

2

报价的total-cores键,以便它与嵌入的连字符正确解析:

c.aggregate({ 
    $project: { 
     hostname: 1, 
     "total-cores": {$multiply: ["$processors.sockets","$processors.cores"]}, 
     virtual: 1, 
     _id: 0 
    } 
}); 
+0

就这么简单!谢谢。文件应该更清楚。 – jhane 2013-04-25 19:10:19