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
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)