Hướng dẫn mongodb count documents golang - mongodb đếm tài liệu golang

Tài liệu về nhà → điGo

Trong hướng dẫn này, bạn có thể tìm hiểu làm thế nào để có được số lượng chính xác và ước tính số lượng tài liệu trong bộ sưu tập của bạn.accurate and estimated count of the number of documents in your collection.

Để chạy các ví dụ trong hướng dẫn này, hãy tải dữ liệu mẫu vào bộ sưu tập tea.ratings với đoạn trích sau:

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))

Mẹo

Cơ sở dữ liệu và bộ sưu tập không tồn tại

Nếu cơ sở dữ liệu và bộ sưu tập cần thiết không tồn tại khi bạn thực hiện thao tác ghi, máy chủ sẽ ngầm tạo chúng.

Mỗi tài liệu chứa xếp hạng cho một loại trà tương ứng với các trường typerating.

Để đếm số lượng tài liệu phù hợp với bộ lọc truy vấn của bạn, hãy sử dụng phương thức CountDocuments().

Mẹo

Cơ sở dữ liệu và bộ sưu tập không tồn tại

Nếu cơ sở dữ liệu và bộ sưu tập cần thiết không tồn tại khi bạn thực hiện thao tác ghi, máy chủ sẽ ngầm tạo chúng.

Mỗi tài liệu chứa xếp hạng cho một loại trà tương ứng với các trường typerating.

Để đếm số lượng tài liệu phù hợp với bộ lọc truy vấn của bạn, hãy sử dụng phương thức CountDocuments().

Nếu bạn vượt qua bộ lọc truy vấn trống, phương thức này sẽ trả về tổng số tài liệu trong bộ sưu tập.

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)
1

Bạn có thể sửa đổi hành vi của CountDocuments() bằng cách chuyển theo loại CountOptions. Nếu bạn không chỉ định bất kỳ tùy chọn nào, trình điều khiển sử dụng các giá trị mặc định của nó.

Loại CountOptions cho phép bạn định cấu hình các tùy chọn với các phương thức sau:

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)
3

Phương pháp

Loại CountOptions cho phép bạn định cấu hình các tùy chọn với các phương thức sau:

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)
5

Phương pháp

Sự mô tả

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)
7

Loại đối chiếu ngôn ngữ để sử dụng khi sắp xếp kết quả.

Loại CountOptions cho phép bạn định cấu hình các tùy chọn với các phương thức sau:

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)
9

Phương pháp

Sự mô tả

Loại đối chiếu ngôn ngữ để sử dụng khi sắp xếp kết quả.

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)

Mặc định:

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)
2$count stage to count the number of documents in an aggregation pipeline.

Chỉ số để sử dụng để quét các tài liệu để đếm.

  • Số lượng tài liệu tối đa để đếm.

  • Mặc định:

    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)
    6

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)
}

Lượng thời gian tối đa mà truy vấn có thể chạy trên máy chủ.

Số lượng tài liệu cần bỏ qua trước khi đếm.

Ví dụ sau đếm số lượng tài liệu trong đó rating nhỏ hơn

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)
}
2:

Bạn cũng có thể bao gồm giai đoạn đếm $ để đếm số lượng tài liệu trong một đường ống tổng hợp.

Ví dụ sau thực hiện các hành động sau:

Để đếm số lượng tài liệu phù hợp với bộ lọc truy vấn của bạn, hãy sử dụng phương thức CountDocuments().

Nếu bạn vượt qua bộ lọc truy vấn trống, phương thức này sẽ trả về tổng số tài liệu trong bộ sưu tập.

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)
7

Loại đối chiếu ngôn ngữ để sử dụng khi sắp xếp kết quả.

Loại CountOptions cho phép bạn định cấu hình các tùy chọn với các phương thức sau:

Phương pháp

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

Sự mô tả

  • Loại đối chiếu ngôn ngữ để sử dụng khi sắp xếp kết quả.

  • Mặc định:

    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)
    2

  • Chỉ số để sử dụng để quét các tài liệu để đếm.

  • Số lượng tài liệu tối đa để đếm.

Mặc định:

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)
6

  • CountDocuments()

  • Lượng thời gian tối đa mà truy vấn có thể chạy trên máy chủ.

  • EstimatedDocumentCount()

  • Số lượng tài liệu cần bỏ qua trước khi đếm.