根据文档,"$"保留给运营商.但是,如果查看组运算符,则值必须以美元为前缀.这些值不是运算符.那么在这种情况下它意味着什么呢?示例如下:
db.article.aggregate(
{ $group : {
_id : "$author",
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
Run Code Online (Sandbox Code Playgroud)
为什么pageView需要一个领先的美元符号?我在当地尝试过,没有美元符号就行不通.
“ $”等效于“ $$ CURRENT”。其中CURRENT是一个系统变量,在大多数阶段中默认为当前对象的根,除非在特定阶段中另有说明。电流可以反弹。
而且,“除非证明,否则所有阶段开始CURRENT一样ROOT。”
最后:
“
ROOT:引用当前在聚合管道阶段正在处理的根文档,即顶级文档。” 参考:系统变量
即ROOT,因此CURRENT,是正在分组的文档,并且$<field>访问的属性CURRENT。
注意事项:
CURRENT是可修改的。但是,由于$<field>等效于$$CURRENT.<field>,所以重新绑定会CURRENT更改$访问的含义。” 参考:系统变量
| 归档时间: |
|
| 查看次数: |
10652 次 |
| 最近记录: |