MongoDB切片查询到golang

时间:2019-05-30 10:30:00

标签: arrays mongodb go slice mgo

如何将下面的切片查询写到golang中?

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

尝试过但不起作用

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

找不到任何东西。有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:2)

使用Collection.Find()只能指定过滤器。但是您所拥有的只是一个预测:

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

可以使用Query.Select()指定投影,因此可以在投影中应用$slice

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

还要注意,您过滤的属性是"id"还是仅仅是一个错字,应该是"_id"。如果是后者,您还可以使用Collection.FindId()来按文档ID查询:

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