Mongo Shell:评估简单表达式

时间:2018-12-25 20:13:46

标签: mongodb

在开发复杂的聚合时,我希望能够测试出更简单的表达式作为健全性检查。所以我想知道mongo shell是否有能力评估简单表达式。

例如,我想做一些简单的事情,例如:

> { $hour: ISODate("2016-01-01T12:30:00Z") }
ISODate("2016-01-01T12:30:00Z")

在上面的示例中,外壳似乎没有评估并返回所需的小时部分。

可以在这里做我想做的事吗?

2 个答案:

答案 0 :(得分:1)

如果您愿意使用Mongo Shell以外的其他工具,NoSQLBooster将评估部分查询操作。只需突出显示相关部分,然后点击运行即可。

这对于构造具有多个阶段的管道特别有用。您可以一次评估您的管道,以验证将哪些文档传递到下一阶段。

enter image description here

答案 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();

或者您可以将最后一部分包装在函数中并保存,以备后用。我们的想法是我们将进行一个临时集合,在其上插入一个空白文档,然后以聚合方式评估一个表达式。缺点是您只能评估项目聚合操作中支持的那些表达式。