mongodb - 在 mongo shell 中加载和运行聚合

标签 mongodb

我已经编写了一个聚合代码,我想在 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/

相关文章:

mongodb - Mongoose "setter"表现得像 "getter"?

node.js - Mongoose 不断打开与 MongoDB 的连接

node.js - 如何用MongoDB递归查询树结构?

email - MongoDB多步事务问题

bash - mongodb 导出和删除文档

mongodb - 向 MongoDB 集合中的每个文档添加新字段

php - 调用未定义的方法 MongoDB\Driver\ReadConcern::isDefault()

c# - 将 Guid 列表存储在 MongoDb 中作为字符串列表

MongoDB 聚合查询 - 重命名从嵌入式文档中返回的字段

javascript - 如何使用Mongoose查询导入的json