• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

281
Views
Script de shell de Mongoexport: error en la consulta

Escribí un script de shell para crear un volcado de datos de registros actualizados ayer usando el comando mongoexport.

 yesterday=$(date -d 'yesterday 00:00:00' '+%s'000) today=$(date -d 'today 00:00:00' '+%s'000) query="'{\"updated_at\":{\$gte:new Date(${yesterday}),\$lte:new Date(${today})}}'" echo ${query} mongoexport -h $HOST -d $DOC -c $COL_NAME -u $USER -p $PWD -q ${query} -o $fileName

Después de agregar la consulta, cuando ejecuto el script de shell, aparece el siguiente error en la consola

 '{"updated_at":{$gte:new Date(1484287200000),$lte:new Date(1484373600000)}}' too many positional arguments: [Date(1484287200000),$lte:new Date(1484373600000)}}'] try 'mongoexport --help' for more information

Cuando ejecuto esta consulta en la línea de comando, funciona correctamente. ¿Puede alguien decirme por qué es este error cuando se ejecuta en el script de Shell?

Esto funciona en la línea de comandos.

 $mongoexport -h <<HOST>> -d <<DOC>> -c <<COL> -u <<UN>> -p <<PWD>> -q '{"updated_at":{"$gte":new Date(1484287200000),"$lte":new Date(1484373600000)}}'
about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Hay una regla general en bash : cuando usa una variable, siempre rodéela con comillas dobles. Hay excepciones, pero son raras.

 mongoexport -h "$HOST" -d "$DOC" -c "$COL_NAME" -u "$USER" -p "$PWD" -q "${query}" -o "$fileName"
about 3 years ago · Santiago Trujillo Report

0

Este código funcionó para mí

 yesterday=$(date -d 'yesterday 00:00:00' '+%s'000) today=$(date -d 'today 00:00:00' '+%s'000) query1="{\"transactionDate\":{\$gte: new Date(${yesterday}),\$lte: new Date(${today})}}" echo $yesterday echo $today mongoexport -d databasename-c collectionname --host yourip --port 27017 -p password -u username-q "${query1}" --type=csv --fields=transactionDate,amount > test5.csv
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error