我需要使用mgo在golang中编写查询,这是mongo中的查询:
db.some.aggregate([
{$match: { "data.id": "11111" }},
{$project: {
_id : 0,
url : { $concat: [ "https://www.someurl.com/","$data.aID" ]},
items :{
"$map":{
"input":"$data.items",
"as":"it",
"in":{
"item_title":"$$it.title",
"item_id":"$$it.id"
}}}}])
如果您能解决此问题,我将不胜感激。
//对于错误的问题,我深表歉意,以后我将按照说明进行操作,我的问题是$ concat
答案 0 :(得分:0)
这里的语法很棘手,因为它与JSON类似,但相差很多,令人困惑。
尤其要注意,数组使用花括号分隔符[]bson.M{...}
,而$concat
的值是字符串[]string{...}
的数组:
query := []bson.M{ // NOTE: slice of bson.M here
bson.M{
"$match": bson.M{"data.id": "11111"},
},
bson.M{
"$project": bson.M{
"_id": 0,
"url": bson.M{
"$concat": []string{ // NOTE: slice of strings here
"https://www.someurl.com/",
"$data.aID",
},
},
"items": bson.M{
"$map": bson.M{
"input": "$data.items",
"as": "it",
"in": bson.M{"item_title": "$$it.title", "item_id": "$$it.id"},
},
},
},
},
}