2016-12-20 3 views
1

Я просто пытаюсь получить последний документ в своей коллекции в MongoDB с Golang и Mgo.

Документ в моей коллекции:

{ 
    "_id", 
    "numbers" : { 
     "fst", 
     "snd", 
     "thd" 
    }, 
    "none" : [ 
     { 
      "fst", 
      "snd", 
      "thd", 
      "email" 
     } 
    ], 
    "twoNums" : [ 
     { 
      "fst", 
      "snd", 
      "thd", 
      "email" 
     } 
    ], 
    "threeNums" : [ 
     { 
      "fst", 
      "snd", 
      "thd", 
      "email" 
     } 
    ] 
} 

Я пробовал:

err := db.C("plays").Find(nil).Select(bson.M{"numbers": 1}).Sort("$natural:-1").Limit(1).One(&numbs) 

И с пространством между $ естественны и "-1"

err := db.C("plays").Find(nil).Select(bson.M{"numbers": 1}).Sort("$natural: -1").Limit(1).One(&numbs) 

В MongoDB оболочки он отлично работает

db.getCollection('plays').find({}, {numbers: 1}).sort({$natural: -1}).limit(1) 

ответ

2

Глядя на code Я предполагаю, что это должно быть -$natural для сортировки в обратном порядке:

err := db.C("plays") 
    .Find(nil) 
    .Select(bson.M{"numbers": 1}) 
    .Sort("-$natural") 
    .Limit(1) 
    .One(&numbs) 
+0

Большое спасибо! Это единственная комбинация, которую я не пробовал :) –

0

использование

db.C("plays").Find(nil).Select(bson.M{"numbers": 1}).Sort("$-natural").Limit(1).One(&numbs) 
+0

К сожалению, это не помогло. Выбран первый вставленный документ –

+0

Это потому, что 'limit (1)'? @ АнтонКровохижин –

+0

Нет, после запроса мне нужно взять только первый документ. Но я попытался удалить лимит (1), и это не помогло мне. –

Смежные вопросы