Docs Menu

Docs HomeGo

ドキュメントをカウント

項目一覧

  • Overview
  • 正確なカウント
  • 集計
  • 推定のカウント
  • 詳細情報

このガイドでは、コレクション内のドキュメント数の正確な推定値を取得する方法を学びます。

このガイドの例を実行するには、次のスニペットを使用してサンプルデータを tea.ratingsコレクションにロードします。

coll := client.Database("tea").Collection("ratings")
docs := []interface{}{
bson.D{{"type", "Masala"}, {"rating", 10}},
bson.D{{"type", "Matcha"}, {"rating", 7}},
bson.D{{"type", "Assam"}, {"rating", 4}},
bson.D{{"type", "Oolong"}, {"rating", 9}},
bson.D{{"type", "Chrysanthemum"}, {"rating", 5}},
bson.D{{"type", "Earl Grey"}, {"rating", 8}},
bson.D{{"type", "Jasmine"}, {"rating", 3}},
bson.D{{"type", "English Breakfast"}, {"rating", 6}},
bson.D{{"type", "White Peony"}, {"rating", 4}},
}
result, err := coll.InsertMany(context.TODO(), docs)
if err != nil {
panic(err)
}
fmt.Printf("Number of documents inserted: %d\n", len(result.InsertedIDs))

Tip

存在しないデータベースとコレクション

書き込み操作を実行するときに必要なデータベースとコレクションが存在しない場合は、サーバーが暗黙的にそれらを作成します。

各ドキュメントには、 フィールドとtype ratingフィールドに対応するお茶の種類の評価が含まれています。

クエリフィルターに一致するドキュメントの数をカウントするには、CountDocuments() メソッドを使用します。

Tip

空のクエリフィルターを渡すと、このメソッドはコレクション内のドキュメントの総数を返します。

CountOptions タイプを渡すことで、CountDocuments() の動作を変更することができます。オプションを指定しない場合、ドライバーはデフォルト値を使用します。

CountOptions タイプでは、次の方法でオプションを設定できます。

方式
説明
SetCollation()
The type of language collation to use when sorting results.
Default: nil
SetHint()
The index to use to scan for documents to count.
Default: nil
SetLimit()
The maximum number of documents to count.
Default: 0
SetMaxTime()
The maximum amount of time that the query can run on the server.
Default: nil
SetSkip()
The number of documents to skip before counting.
Default: 0

次の例では、rating6 より小さいドキュメントの数をカウントします。

filter := bson.D{{"rating", bson.D{{"$lt", 6}}}}
count, err := coll.CountDocuments(context.TODO(), filter)
if err != nil {
panic(err)
}
fmt.Printf("Number of ratings less than six: %d\n", count)

また、$count ステージを含めて、集計パイプライン内のドキュメントの数をカウントすることもできます。

次の例では、次のアクションが実行されます。

  • rating5より大きいドキュメントの数をカウントする

  • 次のフィールドにカウントを割り当てます: total_documents

matchStage := bson.D{{"$match", bson.D{{"rating", bson.D{{"$gt", 5}}}}}}
countStage := bson.D{{"$count", "total_documents"}}
cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{matchStage, countStage})
if err != nil {
panic(err)
}
var results []bson.D
if err = cursor.All(context.TODO(), &results); err != nil {
panic(err)
}
for _, result := range results {
fmt.Println(result)
}

コレクション内のドキュメントの数を見積もるには、EstimatedDocumentCount() メソッドを使用します。

注意

EstimatedDocumentCount() メソッドは、コレクション全体をスキャンするのではなく、コレクションのメタデータを使用するため、CountDocuments() メソッドよりも高速です。

EstimatedDocumentCountOptions タイプを渡すことで、EstimatedDocumentCount() の動作を変更することができます。オプションを指定しない場合、ドライバーはデフォルト値を使用します。

EstimatedDocumentCountOptions タイプでは、次の方法でオプションを設定できます。

方式
説明
SetMaxTime()
The maximum amount of time that the query can run on the server.
Default: nil

次の例では、ratings コレクション内のドキュメントの数を見積ります。

count, err := coll.EstimatedDocumentCount(context.TODO())
if err != nil {
panic(err)
}
fmt.Printf("Estimated number of documents in the ratings collection: %d\n", count)

上記で説明されている操作の詳細については、次のガイドを参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

←  クエリを指定するRetrieve Data →
フィードバックを送る
© 2022 MongoDB, Inc.

会社概要

© 2022 MongoDB, Inc.