在使用组时,我需要很少的值通过管道(没有更改)传递到后续管道聚合器
例如,如果我的输入是
{“_id”:1,“标签”:[“a”,“b”,“b”,“c”],“文本”:“a”},{“_id”:2,“标签”:[ “a”,“c”],“文本”:“b”}
我喜欢输出
{_id:1,标签:[a,b,c],文本:a},{_id:2,标签:[a,c],文本:b}
我做了一个放松和分组并做 $addToSet 来删除重复。我的问题是我该怎么做
text
按原样出现在输出中。文本键和值只需要通过这个管道,但是我被迫使用累加器
到目前为止我尝试了这段代码
使用测试
var unwind = { $unwind : "$tags"};
var group = { $group : { _id : "$_id" , tags : { $addToSet : "$tags" } , text : { $first : "$text" }}};
db.test.aggregate(展开,组)
它工作正常,但这不是 $first 的意图,建议与 sort 一起使用。这样做的正确方法是什么?