<p>你有很多语法错误。你要做的第一件事就是把语法弄好。我会试着列出所有可能解决的问题。你知道吗</p>
<p>项目:</p>
<pre><code>'$project':{origen:'origen', destino:'destino', anio:'fecha'}
</code></pre>
<p>1.缺少开合撑杆。你知道吗</p>
<p>2.缺少访问嵌入字段以及变量引用$的点符号。你知道吗</p>
<p>修正:</p>
<pre><code>{'$project':{origen:'$mercancia.origen', destino:'$mercancia.destino'; anio:'$mercancia.fecha', envio:'$mercancia.envio'}}
</code></pre>
<p>匹配:</p>
<pre><code> {$match: 'origen':'San Sebastian', $year:{'fecha':08/02/2005}}
</code></pre>
<p>1.您正在将查询运算符与聚合运算符组合,这在常规匹配中是不允许的。你知道吗</p>
<p>2.缺少查询条件的大括号。你知道吗</p>
<p>3.支持的日期格式为MM/DD/YYYY。你知道吗</p>
<p>修正:</p>
<p>1.将<code>$match</code>与<code>$expr</code>一起使用。你知道吗</p>
<p>2.为查询条件添加左大括号和右大括号。你知道吗</p>
<p>3.将字符串日期格式更改为存储为12/24/2003。你知道吗</p>
<pre><code>{$match:{
'origen':'San Sebastian',
$expr:{$eq:[{$year:{$dateFromString:{dateString:"$anio"}}}, input year ]}
}}
</code></pre>
<p>集团:</p>
<pre><code>{$group:{ '_id':{'$destino', '$anio'}}},{ maximo:{$max:{$count:{'_id':'envio'}}}
</code></pre>
<ol>
<li>组键应该是键值对。你知道吗</li>
<li>无法将$max与$count合并。$max是聚合运算符,$count是聚合阶段。你知道吗</li>
</ol>
<p>Fix:(不确定您在这里想要什么,但看起来您想要按<code>destino</code>&;<code>envio</code>分组并计算它们的出现次数并按计数降序排序。你知道吗</p>
<pre><code>{$group: {_id:{'destino':'$destino', 'envio':'$envio'}, count:{$sum:1} }},
{$count:{sum:-1}}
</code></pre>
<p>把它们放在一起。你知道吗</p>
<p>数据:</p>
<pre><code>db.mercancias.insert([
{"cliente": {"nombre": "Cafes el amanencer"}, "mercancia": {"envio": "Normal", "tipo": "Gaseoso", "fecha": "12/24/2003", "peso": 21, "volumen": 43, "origen": "Cadiz", "destino": "Castellon"}, "vagon": {"id": 1330, "volumen": 202, "peso": 433 }},
{"cliente": {"nombre": "Electronica Chispas"}, "mercancia": {"envio": "Normal", "tipo": "Liquido", "fecha": "02/08/2005", "peso": 17, "volumen": 24, "origen": "San Sebastian", "destino": "Orense"}, "vagon": {"id": 1290, "volumen": 111, "peso": 464 }},
{"cliente": {"nombre": "Pepe Gotera y Otilio"}, "mercancia": {"envio": "Economico", "tipo": "Contaminante", "fecha": "03/14/2003", "peso": 2, "volumen": 49, "origen": "Santander", "destino": "Burgos"}, "vagon": {"id": 1100, "volumen": 323, "peso": 258 }},
{"cliente": {"nombre": "Coches Coco"}, "mercancia": {"envio": "Normal", "tipo": "Explosivo", "fecha": "07/11/2002", "peso": 23, "volumen": 51, "origen": "Avila", "destino": "Santa Cruz de Tenerife"}, "vagon": {"id": 1183, "volumen": 171, "peso": 439 }},
{"cliente": {"nombre": "Infraestructuras Fracturas"}, "mercancia": {"envio": "Urgente primera hora", "tipo": "Fragil", "fecha": "08/07/2000", "peso": 53, "volumen": 3, "origen": "Tarragona", "destino": "Soria"}, "vagon": {"id": 1454, "volumen": 408, "peso": 101 }}
])
</code></pre>
<p>查询:</p>
<pre><code>db.mercancias.aggregate([
{'$project':{origen:'$mercancia.origen', destino:'$mercancia.destino', anio:'$mercancia.fecha', envio:'$mercancia.envio'}},
{$match:{
'origen':'San Sebastian',
$expr:{$eq:[{$year:{$dateFromString:{dateString:"$anio"}}}, 2005]}
}},
{$group: {_id:{'destino':'$destino', 'envio':'$envio'}, count:{$sum:1} }},
{$sort:{count:-1}},
{$limit:3}
]);
</code></pre>
<p>输出:</p>
<pre><code> { "destino":"Orense", "envio":"Normal", "count" : 1}
</code></pre>