Mongoを初めて使用しています.Mgoドライバを使用してGoでファセット検索を実装しようとしています。私は私のクエリとファセット数に一致するドキュメントの両方を取得する必要があります。ファウンデーションカウントを使用したMongo検索結果
私の現在の実装では、ドキュメントを取得するためにクエリを実行し、同じパラメータを使用してファセットカウントを取得する別のクエリを実行しますが、それは実際には効率が悪いようです。これを1つのステップで実行する良い方法はありますか?例えば
私は本のコレクションがある場合、:
[{
title: "Book One",
author: "Author A",
numPages: 20,
type: "book"
},
{
title: "Book Two",
author: "Author B",
numPages: 40,
type: "book"
},
...
...
...
{
title: "Magazine AA",
author: "Author A",
numPages: 10,
type: "magazine"
}]
最初に私は私のクエリに一致する文書を取得:
err = books.Find(bson.M{"$and": matches}).All(&results)
その後、私は総額パイプラインと$を使用してクエリを繰り返しファセットカウントを取得するファセット:
err = Pipe([]bson.M{
{"$match": bson.M{"$and": matches}},
{"$facet": bson.M{
"type": []bson.M{bson.M{"$sortByCount": "$type"}},
"author": []bson.M{bson.M{"$sortByCount": "$author"},
}},
}).All(&facets)
私はまた私の結果を書くことができます私はファセットカウントを決定するために使用することができる一時的なコレクションに変換しますが、それ以上の効率があるかどうかはわかりません。
素晴らしい!どうもありがとうございました。 – user3476370