gpt4 book ai didi

mongodb - 返回所有字段 MongoDB 聚合

转载 作者:行者123 更新时间:2023-12-04 18:05:18 29 4
gpt4 key购买 nike

我尝试在这里搜索,但无法真正找到我需要的东西。我有这样的文件:

{
appletype:Granny,
color:Green,
datePicked:2015-01-26,
dateRipe:2015-01-24,
numPicked:3
},

{
appletype:Granny,
color:Green,
datePicked:2015-01-01,
dateRipe:2014-12-28,
numPicked:6
}

我只想返回那些最近采摘的苹果,将所有领域。我希望我的查询本质上只返回第一个文档。当我尝试这样做时:
db.collection.aggregate([
{ $match : { "appletype" : "Granny" } },
{ $sort : { "datePicked" : 1 } },
{ $group : { "_id" : { "appletype" : "$appletype" },
"datePicked" : { $max : "$datePicked" } },
])

它确实返回了我最近采摘的所有苹果,但只有 appletype:Granny 和 datePicked:2015-01-26。我需要剩余的字段。我尝试使用 $project 并添加所有字段,但没有得到我需要的。此外,当我将其他字段添加到组中时,由于 datePicked 是唯一的,它返回了两条记录。

我怎样才能返回所有字段,只返回最新的日期选择?

谢谢!

最佳答案

从您的描述来看,您似乎想要为收藏中的每种苹果类型创建一个文档,并显示包含最新 datePicked 的文档。值(value)。

这是一个聚合查询:

db.collection.aggregate([
{ $sort: { "datePicked": -1 },
{ $group: { _id: "$appletype", color: { $first: "$color" }, datePicked: { $first: "$datePicked" }, dateRipe: { $first: "$dateRipe" }, numPicked: { $first: "$numPicked" } } },
{ $project: { _id: 0, color: 1, datePicked: 1, dateRipe: 1, numPicked: 1, appletype: "$_id" } }
])

但是根据您编写的汇总查询,您似乎正在尝试获取以下信息:
db.collection.find({appletype: "Granny"}).sort({datePicked: -1}).limit(1);

关于mongodb - 返回所有字段 MongoDB 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155546/

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