1
私はGoでMongoDBとmgoをストレージエンジンとして使用してAPIを作成しています。 GETリクエストの抽象化の一種として、クエリ文字列パラメータのフィールドで結果をフィルタリングできるようにしましたが、文字列フィールドに対してのみ機能します。Go mgo getフィールドタイプ
私は、コレクションで検索する前に、型を正しい型にキャストするためにフィールド名のみを持つフィールドの型を取得する方法を探しています。ここで コードです:MongoDBので
func (db *DataBase) GetByFields(fields *map[string]interface{}, collection string) ([]DataModel, error) {
var res []interface{}
Debug("Getting " + collection + " by fields: ")
for i, v := range *fields {
Debug("=> " + i + " = " + v.(string))
// Here would be the type checking
}
if limit, ok := (*fields)["limit"]; ok {
limint, err := strconv.Atoi(limit.(string))
if err != nil {...} // Err Handling
delete(*fields, "limit")
err = db.DB.C(collection).Find(fields).Limit(limint).All(&res)
if err != nil {...} // Err Handling
} else {
err := db.DB.C(collection).Find(fields).All(&res)
if err != nil {...} // Err Handling
}
resModel := ComputeModelSlice(res, collection)
return resModel, nil
}
私は種類を確認することができます。
db.getCollection('CollectionName').findOne().field_name instanceof typeName
しかし、私は、MgOとのことを実行する方法を見つけることができません。