arrays - MongoDB slice 查询到golang

标签 arrays mongodb go slice mgo

如何将下面的 slice 查询写入 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 的方法:

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)

关于arrays - MongoDB slice 查询到golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56376454/

相关文章:

c - 将变量分配给数组元素时出现问题

node.js - 如何正确构建我的 NodeJS、Express 和 MongoDB 代码?

oop - 将其他pkg的类型嵌入到我的中,并通过字面量进行初始化

http - 如何在 Go 中删除 cookie

c - C 中 char 数组的 if 语句

javascript - 用一个元素初始化数组,如果数组存在则压入元素

arrays - SAS如何使用ARRAY更改变量(列)位置(值也)

node.js - Mongoose 中的 Joi.forbidden() 等效项

javascript - 在数组字段中插入文档

go - 在 GO 中重用数据库连接和 'invalid memory address' 错误