Пример Do c:
{
bioupdate: [
{
date: "02/03/2020",
ts: "1583133621197-02/03/2020_15:20:21",
status: "1"
},
{
date: "02/03/2020",
ts: "1583135570542-02/03/2020_15:52:50",
status: "1"
},
{
date: "02/03/2020",
ts: "1583135586272-02/03/2020_15:53:06",
status: "0"
},
{
date: "21-03-2020:17:35:08",
ts: 1584783308231,
status: "1"
}
]
}
Ниже приведен код, который я пробовал с конвейером агрегации, разбивая строку с первым '-' и беря первый элемент, который отметка времени эпохи и сохранение ее в том же поле в существующем массиве.
db.novelmodel.aggregate([
{$match: {pin: "JAIN"}},
{
$project: {
pin: 1,
bioupdate: {
$filter: {
input: "$bioupdate",
as: "bioupdateArray",
cond: { $and: [
{$arrayElemAt:[{$split:["$$bioupdateArray.ts", "-"]}, 0]}
] }
}
}
}
},
{$out:"novelmodel"}
]);
Появляется сообщение об ошибке: "errmsg" : "$split requires an expression that evaluates to a string as a first argument, found: double"
. Я не уверен, как фильтр принимает только дату с разделителем ' - 'в строке