如何使用mongodb官方驱动程序使用比较运算符构建查询?

I need to build a query using comparison operators, equivalent of db.inventory.find( { qty: { $gt: 20 } using the official driver. Any idea how to do that?

Connecting to a server is something like:

client, err := mongo.NewClient("mongodb://foo:bar@localhost:27017")
if err != nil { log.Fatal(err) }
err = client.Connect(context.TODO())
if err != nil { log.Fatal(err) }

Then obtain the inventory mongo.Collection like:

coll := client.Database("baz").Collection("inventory")

Then you can execute your query using Collection.Find() like:

ctx := context.Background()

cursor, err := coll.Find(ctx,
    bson.NewDocument(
        bson.EC.SubDocumentFromElements("qty",
            bson.EC.Int32("$gt", 20),
        ),
    ),
)

defer cursor.Close(ctx) // Make sure you close the cursor!

Reading the results using the mongo.Cursor:

doc := bson.NewDocument()
for cursor.Next(ctx) {
    doc.Reset()
    if err := cursor.Decode(doc); err != nil {
        // Handle error
        log.Printf("cursor.Decode failed: %v", err)
        return
    }

    // Do something with doc:
    log.Printf("Result: %v", doc)    
}

if err := cursor.Err(); err != nil {
    log.Printf("cursor.Err: %v", err)
}

Note: I used a single bson.Document value to read all documents, and used its Document.Reset() in the beginning of each iteration to clear it and "prepare" it to read a new document into it. If you want to store the documents (e.g. in a slice), then you can obviously not do this. In that case just create a new doc in each iteration like doc := bson.NewDocument().