グループの使用中にパイプラインを (変更なしで) 後続のパイプライン アグリゲーターに渡すには、いくつかの値が必要です。
たとえば、私の入力が
{ "_id" : 1, "タグ" : [ "a", "b", "b", "c" ], "テキスト" : "a" }, { "_id" : 2, "タグ" : [ "a", "c" ], "text" : "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 の意図ではなく、並べ替えで使用することをお勧めします。これを行う正しい方法は何ですか?