MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête de tranche MongoDB dans golang

Avec Collection.Find() vous ne pouvez spécifier que le filtre. Mais ce que vous avez est une projection :

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

Les projections peuvent être spécifiées à l'aide de Query.Select() , c'est ainsi que vous pouvez appliquer un $slice en projection :

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

Notez également que la propriété par laquelle vous filtrez est "id" ou est juste une faute de frappe et il devrait être "_id" . Dans ce dernier cas, vous pouvez également utiliser Collection.FindId() pour interroger par ID de document :

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