Получить последний документ относительно (времени или идентификатора), используя только Pymongo
В MongoDB этот метод обычно используется для получения последнего документа относительно (времени или идентификатора):
db.collection.find().sort({ "_id": -1 }).limit(1);
MySchema.find().sort({ _id: -1 }).limit(1)
db.getLastInsertedDocument.find({}).sort({_id:-1}).limit(1);
Но когда я использую pymongo для поиска последней записи в моей коллекции, приведенный ниже код выдает ошибку.
from pymongo import MongoClient
import random
import datetime
import time
import pprint
from datetime import datetime
#from bson import ObjectId
client = MongoClient()
client = MongoClient('localhost', 27017)
db = client.sensor_temperature # createdb
posts = db.posts2
print('Total Record for the collection: ' + str(posts.count()))
x=datetime.now().strftime("%H:%M:%S")
record=posts.find().sort({ "_id": -1 }).limit(1) ### ERR
#record=posts.find({"start_date":new Date()}).pretty() #### ERR
#record=posts.findOne({"_id": x}) #### <pymongo.cursor.Cursor object at 0x0141FCD0>
pprint.pprint(record)
text=record
print(text)
Как получить последние записи только с помощью Pymongo?
1 ответ
Некоторые команды драйвера pymongo не совсем соответствуют оболочке mongodb. В документации объясняются вызовы методов. Это должно работать:
from pymongo import MongoClient, DESCENDING
<...>
record=posts.find().sort('_id', DESCENDING).limit(1)
pprint.pprint(list(record)[0])