【发布时间】:2017-06-27 10:00:35
【问题描述】:
在我的 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")
}]
}
我想查找所有在 GB 地区有效发布的产品,并按 GB 发布日期对结果进行排序。
我尝试使用:
db.product.find(
{ "release" : { "$elemMatch" : { "region" : "GB", "active" : "Y" } } }
).sort({ "release.date" : 1 });
这会找到正确的产品,但不会按匹配元素的发布日期排序(而是按数组中的最短发布日期排序)。
从我目前阅读的内容来看,似乎无法按匹配元素的属性进行排序,这是正确的吗?
可以用aggregation framework 完成吗?如果可以,怎么做?
【问题讨论】:
标签: mongodb sorting aggregation-framework