gpt4 book ai didi

node.js - 如何在 Loopback 查询 Mongo 中获取聚合结果

转载 作者:可可西里 更新时间:2023-11-01 09:59:07 25 4
gpt4 key购买 nike

我是环回的新手,需要解决以下问题。我需要来自两个字段(电子邮件和名称)的 mongo 的不同结果。

数据:

var a = [ { email: 'x@gmail.com',name: 'x'}, { email: 'x@gmail.com',name: 'x'}, { email: 'x@gmail.com',name: 'z'} ]

输出:

var a = [ 
{ email: 'x@gmail.com',name: 'x'},
{ email: 'x@gmail.com',name: 'z'}
]

如何在环回中使用以下聚合函数来获得所需的输出结果。

collection = db.tb;
result = collection.aggregate(
[
{"$group": { "_id": { email: "$email", name: "$name" } } }
]
);

(来源 How to efficiently perform "distinct" with multiple keys?)

最佳答案

使用额外的 $group$project 阶段来投影所需的输出,

  • Groupemailname,为每个唯一的获取单个记录组合。
  • 再次将所有记录分组并累积_id在前一阶段使用 $push 运算符获得。
  • Project records 字段并排除 _id 字段。

代码:

 result = collection.aggregate( 
[
{$group:{"_id":{"email": "$email","name": "$name" }}},
{$group:{"_id":null,"records":{$push:"$_id"}}},
{$project:{"_id":0,"records":1}},
]
);

对/对:

{
"records" : [
{
"email" : "x@gmail.com",
"name" : "z"
},
{
"email" : "x@gmail.com",
"name" : "x"
}
]
}

关于node.js - 如何在 Loopback 查询 Mongo 中获取聚合结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27754480/

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