通过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});"
我不知道这是否可行,我发现在 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});"