我正在考虑在MongoDb查询中使用一些JavaScript。我有几个选择:
db.system.js.save
db中的函数然后执行它db.myCollection.find
子句的$where
并且每次都发送JS exec_js
(我想用其中一个)我计划在常规使用的查询中使用JavaScript,该查询作为对站点或API的请求的一部分执行(即不是批处理管理作业),因此以合理的速度执行查询非常重要。
我正在寻找一个30行的功能。
Javascript每次解释都是新鲜的吗?表现会好吗?构建查询是否是明智的基础?
答案 0 :(得分:1)
每次Javascript被解释为新鲜吗?
差不多。 MongoDB每个运行的MongoDB实例只有一个“javascript实例”。如果您尝试同时运行两个不同的Map / Reduces,您会注意到这一点。
表现会好吗?
显然,这里有“OK”的不同定义。 $where
子句不能使用索引。您可以将该子句与另一个索引查询组合在一起。在任何一种情况下,每个对象都需要从BSON推送到Javascript运行时,然后在运行时内进行操作。
这个过程绝对不是你所说的“高性能”。当然,通过这种方法,Map / Reduce也不是非常高效,人们在生产系统上使用它。
构建查询是否合理?
这里的真正障碍不是代码中的行数,而是此代码将解释的可能文档的数量。即使它是“服务器端”的javascript,它仍然是服务器必须做的一大堆工作。 (在一个线程中,在解释的环境中)
如果你可以测试它并正确定位它,它可能会很好。只是不要指望奇迹。
答案 1 :(得分:0)
你的意思是什么?编写一个JS脚本并通过cron定期调用它。这应该是什么问题?