解析没有固定密钥集的字符串,用于MongoDB查找查询

时间:2014-07-25 13:06:30

标签: go mgo

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

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

如何解析此字符串,以便我可以直接使用 -

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

1 个答案:

答案 0 :(得分:2)

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

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

但由于这是来自API,因此在将q传递给Find之前,您应该进行一些清理。