0

我有一个 API,用户将在其中传递他们想要传递给 MongoDB 的查询参数。API 将从请求参数中获取字符串并将其直接传递给 Mongo 查找查询。查询字符串没有任何固定的键集。它可以具有以下结构之一 -

{"name": "foo"}
{"name": "foo", "source": "bar"}
{"source": "oof", "place": "rab"}
...

我如何解析这个字符串,以便我可以像这样直接使用 -

collection.Find(MyQuery).All(&m)
4

1 回答 1

2

您只需json.Unmarshal在 json 上使用并将其转换为bson.M然后Find像往常一样调用,例如

q := bson.M{}
if err := json.Unmarshal([]byte(json_str), &q); err != nil {
    panic(err)
}
collection.Find(q).All(&m)

但由于这是来自 API,您应该在传递qFind.

于 2014-07-25T13:14:45.130 回答