Используйте mongoexport с --query для ISODate

У меня есть этот запрос, но я получаю синтаксическую ошибку: неожиданный идентификатор

mongoexport --db ium --collection events \
  --query 'db.events.find({'created_at' : {
      $gte: ISODate("2016-03-01T00:00:00.001Z"),
      $lte: ISODate("2016-03-29T23:59:59:59.000Z")
    }, 
    "name" : "UPDATE_SUCCESS"})' \
 --out guille1_test.json

что может быть не так?

2 ответа

Вам нужно использовать "расширенный JSON" в запросах с mongoexport. Таким образом, способ указать "даты" с $date вместо. И --query это просто "строка запроса" в формате JSON. Не вся команда введена в оболочку:

mongoexport --db ium --collection events \
  --query '{ 
    "created_at": { 
      "$gte": { "$date": "2016-03-01T00:00:00.001Z" },
      "$lte": { "$date": "2016-03-29T23:59:59.000Z" }
    },
    "name": "UPDATE_SUCCESS"
  }' \
  --out guile1_test.json

Обратите также внимание на исправленную строку даты в $lte аргумент и, конечно, "цитирование" использования '' вокруг тела аргумента JSON и "" вокруг внутренних выражений и ценностей. Важно, чтобы эти типы кавычек были разными, а "аргументы оболочки" должны иметь свои "внешние" кавычки как '' в противном случае "shell" пытается оценить содержащееся в нем выражение.

Другое рабочее решение - использование new Date() конструктор, как описано в руководстве MongoDB. Это приведет к уменьшению площади тела запроса, например:

    mongoexport --db ium --collection events \
  --query '{ 
    "created_at": { 
      "$gte": new Date("2016-03-01T00:00:00.001Z"),
      "$lte": new Date("2016-03-29T23:59:59.000Z")
    },
    "name": "UPDATE_SUCCESS"
  }' \
  --out guile1_test.json

Этот подход работал для меня из коробки, в то время как все другие альтернативы потерпели неудачу. Здесь есть относительная статья, описывающая этот подход.

Лучший способ добиться этого: Потому что новые Date и IOSDate будут недопустимыми литералами для этой команды.

Для удаленного хоста

mongoexport --host {{host}} --username {{username}} --password {{passord}} --authenticationDatabase admin --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"}  } }'  --type json --out {{path of directory where you would want to export file.}}

Для локального хоста

 mongoexport  --db {{Database}} --collection {{collection Name}} --query '{ "date" : { "$gt" : {"$date":"2019-10-31T00:00:00.000Z"}  } }'  --type json --out {{path of directory where you would want to export file.}}
Другие вопросы по тегам