Я новичок, использующий Mongo
. Мне нужно встроить один или несколько документов в другой документ, где ключ для поиска - ISODate
, который должен быть округлен до второго. Как мне достичь этого результата?
А что, если я должен выполнить поиск более чем на одной клавише, скажем, DtEvent
и WorkstationId
?
Это примерный набор данных:
temperature
коллекция:
{
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:10.723Z"),
"ParameterName" : "temperature",
"ParameterValue" : 232.1
}
{
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:56.622Z"),
"ParameterName" : "temperature",
"ParameterValue" : 231.9
}
pressure
коллекция:
{
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:10.725Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69
}
{
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:56.641Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69
}
{
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:01:42.622Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69
}
Я пытался сделать следующее:
db.pressure.aggregate([{
$lookup: {
from: "temperature",
localField: "DtEvent",
foreignField: "DtEvent",
as: "temperature"
}
}])
Но, как и ожидалось, документ не внедрен, поскольку ключ не совсем совпадает:
/* 1 */
{
"_id" : ObjectId("5e738e151cc1692a9ace9b8c"),
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:10.725Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69,
"temperature" : []
}
/* 2 */
{
"_id" : ObjectId("5e738e151cc1692a9ace9b8f"),
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:00:56.641Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69,
"temperature" : []
}
/* 3 */
{
"_id" : ObjectId("5e738e151cc1692a9ace9b92"),
"WorkstationId" : 1,
"DtEvent" : ISODate("2020-01-01T00:01:42.622Z"),
"ParameterName" : "pressure",
"ParameterValue" : 3276.69,
"temperature" : []
}