MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB slice query in Golang

Con Collection.Find() puoi solo specificare il filtro. Ma quello che hai è una proiezione:

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

Le proiezioni possono essere specificate utilizzando Query.Select() , quindi ecco come puoi applicare una $slice in proiezione:

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

Assicurati inoltre che la proprietà in base al filtro sia "id" oppure è solo un errore di battitura e dovrebbe essere "_id" . In quest'ultimo caso, puoi anche utilizzare Collection.FindId() per interrogare per ID documento:

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