【发布时间】:2016-02-21 00:43:01
【问题描述】:
如何检索多维[]bson.M类型的地图
mongo中的数据是这样的
"taskData" : {
"createdOn" : ISODate("2016-02-20T21:23:11.903Z"),
"Task_content" : "@bob",
"Priority" : "2",
"owner_Uname" : "alice"
}
我试图访问它的代码
var n []bson.M
e := collection.Find(bson.M{"users."+strconv.Itoa(j)+".user_name" : r.FormValue("value[userName]")}).Select(bson.M{"taskData.owner_Uname":1,"_id":0}).All(&n)
if e != nil {
fmt.Println("Error : ",e)
}else{
fmt.Println(n[0]["taskData"])
}
得到这样的输出
map[owner_Uname:alice]
我需要使用另一个查询来访问这个结果字符串。
这是我试图将其转换为简单地图的界面
newMap :=n[0]["taskData"].(map[string]interface{})但它给了我一个运行时错误interface conversion: interface {} is bson.M, not map[string]interface {}
result := rawData{}
err := collection.Find(bson.M{"user_name":n[0]["taskData"]["owner_Uname"]}).All(&result)
现在我想在上面的查询中使用它... 请帮帮我。在此先感谢
编辑:- mongo中的数据是这样的
{
"_id" : ObjectId("56bf128f5a9a6a0ebfdd5075"),
"deadLine" : {
"Start_time" : ISODate("2016-05-24T00:00:00Z"),
"End_time" : ISODate("2016-05-29T00:00:00Z")
},
},
"taskData" : {
"createdOn" : ISODate("2016-02-20T21:23:11.903Z"),
"Task_content" : "@bob",
"Priority" : "2",
"owner_Uname" : "alice"
},
"group" : {
"1" : {
"grp_name" : "grp"
},
"2" : {
"grp_name" : "secondGrp"
}
}
如果使用嵌套结构或结构中的映射完成,我也可以这样做
【问题讨论】:
-
不使用结构体有什么特殊原因吗?
-
是否可以通过嵌套结构实现@Markus W Mahlberg
-
当然。 ;) 我整天都在做。
-
你能给我一个演示吗
-
我在下面写了一个demo,但是有几点需要注意。 a)@RickyA 给了你一个有用的链接。如果你读得正确,你就会有你的解决方案。 b) 你在和同龄人交谈,要求一些东西。对于您想要实现的目标,“没有帮助”甚至是愚蠢的。如果您已经描述了链接没有帮助的方式,那么也许有人会有动力进一步帮助您。 c)您的示例数据在语法上不正确。下次请加minimal, complete and verifiable example。
标签: mongodb go struct bson mgo