arrays - 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}}})
没有找到任何东西。有任何想法吗?
先感谢您
解决方案
与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)
推荐阅读
- python-3.x - python:与 mpi4py 联合进行多处理
- javascript - 如何仅在 v-html 元素中呈现锚标记并避免其他标记并将它们显示为字符串
- javascript - 如何在 AWS Analytics 中捕获用户的位置
- docker - 如何获取当前主机上 Docker swarm 全局服务的地址?
- regression - 固定效应系数解释
- python - 如何在子进程的命令中添加变量名?
- r - 在 R 中运行代码时如何设置时区?
- azure-devops - 在自托管的 azure ddevops 管道中运行时运行 Sudo su
- python - 死循环中的多处理
- python - 如何使用 Python API 获取 JIRA 票证的创建和更新状态?