gpt4 book ai didi

mongodb - 为一个字段的每个不同值找到第一个文档

转载 作者:可可西里 更新时间:2023-11-01 09:58:45 26 4
gpt4 key购买 nike

对于包含字段 field1field2field3 等的文档集合,我需要查找

  1. field3 的不同值
  2. 对于 field3 的每个不同值,需要获取第一个包含 field3 中每个不同值的文档

对于#1,我可以做 db.myCollection.distinct("field3")

我该如何处理#2?

样本收集:

[
{ "field1": 11, "field2": "toyota", "field3": "camry" },
{ "field1": 22, "field2": "toyota", "field3": "corolla" },
{ "field1": 33, "field2": "toyota", "field3": "camry" },
{ "field1": 44, "field2": "honda", "field3": "accord" },
{ "field1": 55, "field2": "honda", "field3": "accord" },
{ "field1": 66, "field2": "honda", "field3": "city" }
]

期望的结果:

[
{ "field1": 11, "field2": "toyota", "field3": "camry" },
{ "field1": 22, "field2": "toyota", "field3": "corolla" },
{ "field1": 44, "field2": "honda", "field3": "accord" },
{ "field1": 66, "field2": "honda", "field3": "city" }
]

最佳答案

您需要运行一个聚合操作,将所有文档按 field3 分组,并使用 $first 累加器与 $$ROOT 带第一个文档的系统变量,如下所示:

db.myCollection.aggregate([
{
"$group": {
"_id": "$field3",
"doc": { "$first": "$$ROOT" }
}
}
])

或精确输出:

db.myCollection.aggregate([
{
"$group": {
"_id": "$field3",
"field1": { "$first": "$field1" },
"field2": { "$first": "$field2" }
}
},
{
"$project": {
"_id": 0,
"field3": "$_id",
"field2": 1,
"field1": 1
}
}
])

关于mongodb - 为一个字段的每个不同值找到第一个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42299756/

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