MongoDB нарезать запрос на Голанг - PullRequest
2 голосов
/ 30 мая 2019

Как я могу написать этот запрос ниже срез в 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 Ответ

2 голосов
/ 30 мая 2019

С 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() для запроса по идентификатору документа:

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