У меня есть MongoDB документы, такие как следующие:
{"_id":{"$oid":"56d810f5c91e6779a38386b8"},
"timestamp": {"$numberLong":"1457000674750"}}
Я построение aggregration трубопровода, который должен содержать следующую $project
сегмента:
{"$project":
{"date": {"$add": ["new Date(3600000)", "$timestamp"]}}
}
Это работает в оболочке MongoDB, но я не могу заставить его работать с rmongodb
. Например, следующий дает ошибку 10 (BSON недействительной), когда включенной в моем трубопроводе:
mongo.bson.from.list(list(
"$project"= list("date"=list("$add"=list(mongo.code.create("new Date(3600000)"), "$timestamp")))
))
Я уверен, что проблема связана с кодом (new Date(3600000)
) и/или включением его в массиве, который находится в поменяйте аргумент на $add
. Я полагаю, что я могу построить буфер BSON «старый путь», но я ищу, как это сделать с mongo.bson.from.list
и/или mongo.bson.from.JSON
.
Ах, похоже, вы смотрите на другие ответы здесь. «Новые даты (числа)», которые вы видите, касаются создания объекта «Date» «извне» для подачи через драйвер. Это вызов JavaScript для объекта Date, и общее намерение должно быть преобразовано, как вы это делаете на своем языке. Поэтому не так, как вы могли бы сделать это здесь, и ваши намерения полностью не ясны. Ваша временная метка '' 'кажется просто номером, так что вы ожидаете« добавить »? Я думаю, вы имеете в виду 1 час в миллисекундах, и это будет просто номер здесь, а не «Date» –
Short version. 1.Вы делаете это неправильно, вам не нужен объект «code», и вы не можете вставлять JavaScript в структуру агрегации (образцы кода фактически оценивают »до« подачи конвейера »). 2. Не уверен, что вы просите, но, похоже, пытается добавить число в число, но путайте, думая, что это дата. –
Спасибо за ваши комментарии, которые указали на ответ. Мое намерение заключалось в создании объекта даты Date с поправкой на временной шкалу (который можно более легко использовать в последующей групповой операции) из временной метки Unix-epoch, и этот метод из SO работал в оболочке. Подставляя «ISOdate (1970, 01, 01, час = 0, tz =« CET »)', вместо этого «кода» мой оригинальный пример работает. Если вы хотите опубликовать это как ответ, я его одобрю! Еще раз спасибо. – niemand