|
@@ -250,19 +250,39 @@ func (ms *MgoSess) One(v *map[string]interface{}) {
|
|
|
}
|
|
|
func (ms *MgoSess) All(v *[]map[string]interface{}) {
|
|
|
of := options.Find()
|
|
|
- of.SetProjection(ms.fields)
|
|
|
- of.SetSort(ms.sorts)
|
|
|
+ if ms.fields != nil {
|
|
|
+ of.SetProjection(ms.fields)
|
|
|
+ }
|
|
|
+ if len(ms.sorts) > 0 {
|
|
|
+ of.SetSort(ms.sorts)
|
|
|
+ }
|
|
|
if ms.skip > 0 {
|
|
|
of.SetSkip(ms.skip)
|
|
|
}
|
|
|
if ms.limit > 0 {
|
|
|
of.SetLimit(ms.limit)
|
|
|
}
|
|
|
+ log.Println(ms.db, ms.coll, ms.query)
|
|
|
cur, err := ms.M.C.Database(ms.db).Collection(ms.coll).Find(ms.M.Ctx, ms.query, of)
|
|
|
+ log.Println(err)
|
|
|
if err == nil && cur.Err() == nil {
|
|
|
cur.All(ms.M.Ctx, v)
|
|
|
}
|
|
|
}
|
|
|
+func (ms *MgoSess) toSort() bson.D {
|
|
|
+ sort := bson.D{}
|
|
|
+ for _, k := range ms.sorts {
|
|
|
+ switch k[:1] {
|
|
|
+ case "-":
|
|
|
+ sort = append(sort, bson.E{k[1:], -1})
|
|
|
+ case "+":
|
|
|
+ sort = append(sort, bson.E{k[1:], 1})
|
|
|
+ default:
|
|
|
+ sort = append(sort, bson.E{k, 1})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sort
|
|
|
+}
|
|
|
func (ms *MgoSess) Iter() *MgoIter {
|
|
|
it := &MgoIter{}
|
|
|
coll := ms.M.C.Database(ms.db).Collection(ms.coll)
|
|
@@ -275,18 +295,7 @@ func (ms *MgoSess) Iter() *MgoIter {
|
|
|
}
|
|
|
find.SetBatchSize(100)
|
|
|
if len(ms.sorts) > 0 {
|
|
|
- sort := bson.D{}
|
|
|
- for _, k := range ms.sorts {
|
|
|
- switch k[:1] {
|
|
|
- case "-":
|
|
|
- sort = append(sort, bson.E{k[1:], -1})
|
|
|
- case "+":
|
|
|
- sort = append(sort, bson.E{k[1:], 1})
|
|
|
- default:
|
|
|
- sort = append(sort, bson.E{k, 1})
|
|
|
- }
|
|
|
- }
|
|
|
- find.SetSort(sort)
|
|
|
+ find.SetSort(ms.toSort())
|
|
|
}
|
|
|
if ms.fields != nil {
|
|
|
find.SetProjection(ms.fields)
|