MongoDB slice query into golang

◇◆丶佛笑我妖孽 提交于 2019-12-12 20:04:00

问题


How can i write this below slice query into golang?

db.con.find({"repoid":1356485},{"contr":{$slice:[0,10]}}).pretty()

Tried with this but not working

DB.C("con").Find(bson.M{"id": ID, "contr": bson.M{"$slice": []interface{}{"$contr", offset, limit}}})

does not find anything. Any ideas?

Thank you in advance


回答1:


With Collection.Find() you can only specify the filter. But what you have is a projection:

{"contr":{$slice:[0,10]}

Projections can be specified using Query.Select(), so this is how you can apply a $slice in projection:

var results []bson.M // Use your own type here, but this works too

err := DB.C("con").Find(bson.M{"id": ID}).Select(bson.M{
    "contr": bson.M{"$slice": []int{offset, limit}},
}).All(&results)

// handle error

Also note sure if the property you filter by is "id" or is just a typo and it should be "_id". If the latter, you may also use Collection.FindId() to query by document ID:

err := DB.C("con").FindId(ID).Select(bson.M{
    "contr": bson.M{"$slice": []int{offset, limit}},
}).All(&results)


来源:https://stackoverflow.com/questions/56376454/mongodb-slice-query-into-golang

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!