我已经编写了一个聚合代码,我想在 mongo shell 中的一个集合上运行。如果我直接将它粘贴到外壳中,我必须逐行执行,这既繁琐又缓慢,尤其是当它不起作用并且我必须重新执行时。因此,我将它放在 .js 文档中并像这样加载它 load("myaggregation.js")
但只有在代码有效时才返回 true
。加载后如何运行聚合?我找不到任何关于此的文档。我必须使用nodejs驱动吗?
最佳答案
将聚合代码放入函数中:
function my_aggregate() {
return db.foo.aggregate( [ ... ] );
}
并将其存储在您的 .js
文件中。
然后运行 load
来加载它。您还可以使用 --shell
命令行标志在命令行上传递文件名,该标志将在运行任何指定的 .js
文件后启动交互式 shell。
一旦文件运行,您的新函数就可以执行了。只需输入
my_aggregate()
更新你必须使用我没有提到的明确的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"}}}]);
}
关于mongodb - 在 mongo shell 中加载和运行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18807699/