gpt4 book ai didi

mongodb - 我如何在 MongoDB 中按 $elemMatch 排序?

转载 作者:可可西里 更新时间:2023-11-01 09:24:57 27 4
gpt4 key购买 nike

在我的 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 来完成吗? ,如果是的话怎么办?

最佳答案

这是您可以运行以获得所需内容的聚合:

db.release.aggregate([
{$unwind:"$release"},
{$match:{"release.active":"Y", "release.region":"GB"}},
{$sort:{"release.date":1}}
])

这会展开发布数组,根据您的条件匹配文档并在发布日期对选定的文档进行排序。

关于mongodb - 我如何在 MongoDB 中按 $elemMatch 排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15136016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com