在开发复杂的聚合时,我希望能够测试出更简单的表达式作为健全性检查。所以我想知道mongo shell是否有能力评估简单表达式。
例如,我想做一些简单的事情,例如:
> { $hour: ISODate("2016-01-01T12:30:00Z") }
ISODate("2016-01-01T12:30:00Z")
在上面的示例中,外壳似乎没有评估并返回所需的小时部分。
可以在这里做我想做的事吗?
答案 0 :(得分:1)
如果您愿意使用Mongo Shell以外的其他工具,NoSQLBooster将评估部分查询操作。只需突出显示相关部分,然后点击运行即可。
这对于构造具有多个阶段的管道特别有用。您可以一次评估您的管道,以验证将哪些文档传递到下一阶段。
答案 1 :(得分:0)
不是理想的解决方案,但是您可以这样:
var exprr = { "$hour": ISODate("2016-01-01T12:30:00Z") };
var tempCollection = "tempCollection";
db.getCollection(tempCollection).insert({});
db.getCollection(tempCollection).aggregate([
{"$project" : {"_id" : 0, "result" : exprr}}
]);
db.getCollection(tempCollection).drop();
或者您可以将最后一部分包装在函数中并保存,以备后用。我们的想法是我们将进行一个临时集合,在其上插入一个空白文档,然后以聚合方式评估一个表达式。缺点是您只能评估项目聚合操作中支持的那些表达式。