在mongo shell中加载和运行聚合

Bra*_*cil 6 mongodb

我编写了一个我希望在mongo shell中的集合上运行的聚合.如果我将它直接粘贴到shell中,我必须逐行进行,这是繁琐而缓慢的,特别是当它不起作用时我必须完成它.因此,我将它放在.js文档中并像这样加载它,load("myaggregation.js")但只有true在代码有效时才会返回.加载后如何运行聚合?我找不到任何关于此的文档.我是否必须使用nodejs驱动程序?

fri*_*edo 8

将聚合代码放在函数中:

function my_aggregate() { 
    return db.foo.aggregate( [ ... ] );
}
Run Code Online (Sandbox Code Playgroud)

并将其存储在您的.js文件中.

然后运行load加载它.您还可以使用--shell命令行标志在命令行上传递文件名,该标志将在运行任何指定.js文件后启动交互式shell .

运行文件后,您可以执行新功能.只需输入

my_aggregate()
Run Code Online (Sandbox Code Playgroud)

更新您必须使用return我未提及的显式内容.所以在你的情况下你会想要这样的东西:

function my_aggregate() {
    return db.zips.aggregate([{ $match: { state: { $in: [ "CA", "NY" ] } }},{ $group:{ _id : {  "state" : "$state","city" : "$city" }, pop : { $sum: "$pop"}}},{ $match: {  pop: { $gt: 25000 } }},{$group:{ _id : {   "city" : "$city"}, pop : { $avg: "$pop"}}}]);
}
Run Code Online (Sandbox Code Playgroud)