Запрос Mongodb для вложенных элементов массива
для моего нового проекта мы начали использовать mongodb в качестве хранилища документов. Он отлично работает для наших требований, но теперь нам нужно реализовать более сложный запрос для элемента sub-sub-array.
Это пример наших документов:
{
"Asset" : {
"Metadata" : {
"Titolo" : {
"Value" : "Titolo 50271235"
},
"Platforms" : {
"Platform" : [
{
"@name" : "MY_PLATFORM_1",
"PublishingRanges" : {
"PublishingRange" : [
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
},
{
"@startdate" : ISODate("2013-10-05T00:00:00Z"),
"@enddate" : ISODate("2014-11-04T23:59:00Z")
}
]
}
},
{
"@name" : "MY_PLATFORM_2",
"PublishingRanges" : {
"PublishingRange" : [
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
},
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
}
]
}
},
{
"@name" : "MY_PLATFORM_3",
"AmbienteDiPubblicazione" : {
"#" : "Produzione"
},
"PublishingRanges" : {
"PublishingRange" : [
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
},
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
}
]
}
},
{
"@name" : "MY_PLATFORM_4",
"PublishingRanges" : {
"PublishingRange" : [
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
},
{
"@startdate" : ISODate("2013-09-05T00:00:00Z"),
"@enddate" : ISODate("2013-11-04T23:59:00Z")
}
]
}
}
]
}
}
}
}
}
Как видите, у нас есть массивПлатформа" которые имеют внутри массив "PublishingRange», Что нам нужно, это найти все документы, которые элемент "Платформа" удовлетворить эти ограничения:
Platform.@name == VAR_PLATFORM
and(
(PublishingRange.@startdate > VAR_START && PublishingRange.@startdate < V_END)
)
Конечно, ограничения по срокам должны быть удовлетвореныПлатформа" с именем == VAR_PLATFORM, а не по другому "Платформа "Я
Мы пытались использовать запрос на основе $ elemMatch, но безуспешно.
Спасибо за любое предложение.
Максимум