通过shell脚本执行带参数的mongo查询,可以吗?

Execute mongo query with parameter through shell scripts, is it possible?

我不知道这是否可行,我发现在 mongo eval 查询中使用 bash 参数可能存在问题。我想要做的是更新 mongo 中的文档,其中值 date 大于今天的日期。

示例:今天的日期小于(<)明天的日期,因此更新同一文档的字段 X。

我得到了以下信息,但我想知道如何将日期变量传递给 mongo 查询。有可能吗?还有其他去罗马的路吗?

#!/bin/sh
today="$(date +'%Y-%m-%d')"

mongo db --eval 'db.Scheme.update({"FutureDate":{$gte: $today}},{$set:{"X":"$today"}});'

或者,我尝试将 $today 切换为 new Date().setHours(0,0,0,0)但无法执行查询。

非常感谢帮助或建设性反馈,谢谢! :)

我找到了解决问题的方法,它解决了(我想说 95%)我的问题。我发现我不需要传递参数,尽管我可以在测试时使用 mongo 查询中的 '"$variable"' 来传递参数(有关更多信息,请参阅传递变量)。

我的查询解决方案如下(不包括传递变量):

db.Scheme.update({"FutureDate":{$gte: new Date()}},{$set :{"X":Value}},{multi:true});

{multi:true}允许循环Scheme中的所有文档。

脚本中的完整查询

!/bin/sh

mongo databaseurl:port/database -u username -p password --eval 'db.Scheme.update({"FutureDate":{$gte: new Date()}},{ $设置 :{"X":Value}},{multi:true});'

传递变量(例子):

!/bin/sh

值=“示例”

mongo databaseurl:port/database -u username -p password --eval 'db.Scheme.update({"FutureDate":{$gte: new Date()}},{ $设置 :{"X":'"$Value"'}},{multi:true});'

希望对大家也有帮助!感谢 user000001 一路上的帮助:)

尝试关注

#!/bin/bash
Value="Example"

mongo databaseurl:port/database -u username -p password --eval  \ 
"db.Scheme.update({\"FutureDate\":{$gte: new Date()}},{$set :{\"X\":\"${Value}\"}},\{multi:true});"