В моей базе данных MongoDB у меня есть набор продуктов. Каждый продукт содержит информацию о выпуске в виде массива, например.
{
"name" : "foo",
"release" : [{
"region" : "GB",
"active" : "Y",
"date" : ISODate("2012-03-01T00:00:00Z")
}, {
"region" : "US",
"active" : "Y",
"date" : ISODate("2012-09-01T00:00:00Z")
}, {
"region" : "FR",
"active" : "N",
"date" : ISODate("2010-01-01T00:00:00Z")
}]
}
Я хочу найти все продукты, находящиеся в активном выпуске в регионе ГБ, и отсортировать результаты по дате выпуска ГБ.
Я попытался сделать это, используя:
db.product.find(
{ "release" : { "$elemMatch" : { "region" : "GB", "active" : "Y" } } }
).sort({ "release.date" : 1 });
Это находит правильные продукты, но не сортирует по дате выпуска из соответствующего элемента (вместо этого сортирует по минимальной дате выпуска из массива).
Из того, что я прочитал до сих пор, похоже, что сортировка по свойствам соответствующего элемента невозможна, это правильно?
Можно ли это сделать с помощью структуры агрегации, и если да, то как?