Golang + mgoを使う時にクエリはbson型にするんだよ、というお話
メリークリスマス。5号です。こんな時間にブログ書いている時点でお察し下さい。
そろそろネタが無くなって来たので、本当に小ネタで。
Golang + mongodbを利用する時にmgo
mgo - Rich MongoDB driver for Go
というドライバを使っているんですが、クエリを投げる時にベタにstringで
var result ResultEntity query := "\"delete_flg\": 0" err := session.Find(query).All(&result)
みたいに書いてもクエリが動いてくれません。(かなり色々端折っています・・・。)
どうするかと言うと一度bson型に入れる必要があり、さらに中でネストされているような場合もそれをbsonにする必要があります。
var result ResultEntity query := bson.M{"test": testid, "hoge_flg": 1, "fuga_flg": 0, "time_start_at": bson.M{"$lte": now}, } err := session.Find(query).All(&result)
みたいに書くと動きます、というお話です。まあ、普通にちゃんとドキュメント読んだ人なら迷いません。ちなみに僕は初めの頃に今回の例で言うクエリ内の「{"$lte": now}」をbsonにしなくてドハマりした記憶があります。
以上、メリクリでした!