首页 > 解决方案 > 在 4.2 版以后的 nodejs 中执行字符串 MongoDb Query 的 db.eval() 的替代方法是什么?

问题描述

我正在寻找执行字符串 mongodb 查询的方法,例如:

 var q = 'db.collection("restaurants").find({   "address.coord": {     $lt: -95.754168   } })';
 this.db.eval('function(){ return ' + q + '.toArray(); }', function(err, res){
             console.log("the result is", res); 
 });o 

我从官方MongoDb 文档中了解到,这曾经是可能的,但现在不是。

还有另一种方法可以实现这一目标吗?

我知道我可以将query condition和存储projections在变量中并将其作为动态实体传递。但是是否也可以一直动态地执行从数据库中获取的字符串查询?

我可以没有这种动态的性质吗?可能是,可能不是。但我想知道我所有的选择。

标签: javascriptnode.jsmongodbmongodb-querynestjs

解决方案


但是是否也可以一直动态地执行从数据库中获取的字符串查询?

不。

服务器正朝着相反的方向发展,正在扩展 MQL 和聚合管道,增加额外的(结构化)功能。

eval 旨在替换为结构化查询选项,如聚合管道和 $expr。许多聚合管道阶段和运算符都支持变量。

如果聚合管道不够灵活,map/reduce 将继续作为最接近 eval 的直接替代方案保持可用。


推荐阅读