Pr0sto_Danya
@Pr0sto_Danya
Начинающий программист

Как вывести нужное поле из курсора (pymongo)?

Я пытаюсь организовать вывод поля из случайного документа коллекции. Этот код компилируется без ошибок, но мне нужно дополнить его так, чтобы из list(cursor) извлекалось определенное поле и выводилось. Я читал документацию, но не смог найти решение, как это реализовать?
@client.command()
async def one(ctx):
    db = cluster['dbname']
    collection = db['collname']
    cursor = db.collection.aggregate([{ "$sample" : {"size" : 1}}])
    doc = list(cursor)
    await ctx.send(f’Output: {doc}’)


Попробовал реализовать обращение к словарю через ["field_name"] после аггрегации:
@client.command()
async def one(ctx):
    db = cluster['dbname']
    collection = db['collname']
    cursor = egeinf1.aggregate([{ "$sample" : {"size" : 1}}])["field_name"]
    await ctx.send(embed = discord.Embed(description = f"{cursor}"))

Выдает ошибку: TypeError: 'CommandCursor' object is not subscriptable
Прочитал кучу статей, все равно не знаю как исправить
Помогите, пожалуйста
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@ya_ne_znau
Попробуйте это: https://docs.mongodb.com/manual/reference/operator...

В теории:
db.collection.aggregate([
    {"$sample": {"size": 1}},
    {"$project": {
        "_id": 0,
        "<field>": <1 или "$_id.<field>" (не знаю)>
    }}
])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы