【发布时间】:2021-01-19 03:17:53
【问题描述】:
我想构建一个动态的 mongo 查询,但在 google 中搜索,我不明白为什么第一个查询返回 null。
matches := []bson.M{bson.M{"$match": bson.M{"age": bson.M{"$gt": 20}}}}
err2 := coll.Find(matches).All(&persons)
这显示了预期的行:
err2 = coll.Find(bson.M{"age": bson.M{"$gt": 20}}).All(&persons)
您能否举一个简单的例子,如何使用两个参数构建查询?
谢谢。
【问题讨论】:
-
Find()需要一个过滤器 document ,在您的第一个示例中,您传递了一段文档。它与动态无关。单个文档可能包含多个过滤器,例如bson.M{"age": bson.M{"$gt": 20}, "name": "Bob"}。你有什么问题? -
问题是为什么匹配 := []bson.M{bson.M{"$match": bson.M{"age": bson.M{"$gt": 20} }}} 不管用。以及如何动态连接多个过滤器。