首页 > 解决方案 > MongoDB切片查询到golang

问题描述

我如何将下面的切片查询写入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}}})

没有找到任何东西。有任何想法吗?

先感谢您

标签: arraysmongodbgoslicemgo

解决方案


Collection.Find()您只能指定过滤器。但你所拥有的是一个投影:

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

可以使用 指定投影Query.Select(),因此这是您可以$slice在投影中应用 a 的方法:

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)

推荐阅读