标签: go mgo
我有一个API,用户将传递他们想要传递给MongoDB的查询参数。 API将从请求参数中获取字符串并将其直接传递给Mongo查询查询。查询字符串不具有任何固定的键集。它可以具有以下结构之一 -
{"name": "foo"} {"name": "foo", "source": "bar"} {"source": "oof", "place": "rab"} ...
如何解析此字符串,以便我可以直接使用 -
collection.Find(MyQuery).All(&m)
答案 0 :(得分:2)
您只需在json上使用json.Unmarshal并将其转换为bson.M,然后像往常一样调用Find example:
json.Unmarshal
bson.M
Find
q := bson.M{} if err := json.Unmarshal([]byte(json_str), &q); err != nil { panic(err) } collection.Find(q).All(&m)
但由于这是来自API,因此在将q传递给Find之前,您应该进行一些清理。
q