【发布时间】:2019-03-05 03:14:24
【问题描述】:
我在 mongoDB 中使用聚合方法进行分组,但是当我使用 $group 时,它返回我用来分组的唯一字段。我试过$project,但它也不起作用。我也尝试了$first,它成功了,但结果数据现在采用不同的格式。
我需要的响应格式如下:
{
"_id" : ObjectId("5b814b2852d47e00514d6a09"),
"tags" : [],
"name" : "name here",
"rating" : "123456789"
}
在我的 query.response 中添加 $group 后,_id 的值发生了变化。 (并且 $group 只使用 _id,如果我尝试任何其他关键字,它会引发累加器错误。请解释一下。)
{
"_id" :"name here" //the value of _id changed to the name field which i used in $group condition
}
我必须删除名称字段中的重复项,而不更改任何结构和字段。我也在使用 nodeJS 和猫鼬,所以请提供适用的解决方案。
【问题讨论】:
-
发布一些示例数据
-
我只是想删除重复项。假设我收到 50 个文档,其中 20 个具有相同的名称字段,我只想要一次。 ( 例如 {{"name" : "name1","rating":"123456"},{"name" : "name2","rating":"123456.004"},{"name" : "name1","rating ":"12345614.23"}})。我不想要第 3 个文件,因为它与第 1 个文件同名并且是重复的。在这种情况下我该怎么办?
-
使用
$first聚合获取其他字段。 -
问题是当我使用组时,id 的值发生了变化,我不想要那个。
-
例如。 {{"_id":ObjectId("123asdf),"name" : "name1","rating":"123456"},{"_id":ObjectId("1234asd),"name" : "name2","rating ":"123456.004"},{"_id":ObjectId("12345as"),"name" : "name1","rating":"12345614.23"}} 使用组返回此响应-> {{"_id" : " name1"},{"_id" : "name2"}}。我需要与以前相同的响应,但没有重复。
标签: node.js mongodb mongoose aggregation-framework