@alwaystried

Почему find не находит значения в БД?

Только начинаю вкатываться в MongoDB, и уже как стать начинаются проблемы.

У меня есть коллекция с именами пользователей и их ID. После того как пользователь ищет информацию о себе в Боте, скрипт выполняет следующий шаг - он уточняет через ID Discord серверов имя этих серверов, чтобы было удобно их вывести. Итог - Mongo не находит ни одну из строк...

Код:
for i in row['fractions']:
                print(i)
                userfrac = factions.find_one({'serverid': int(i)})
                pprint.pprint(userfrac)
                embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True)


Коллекция пользователей:
[
  {
    "_id": {"$oid": "64feee127a131d558f1f9358"},
    "accesses": ["Allow"],
    "blacklist": false,
    "fractions": [860786770689130500, 902860165232078850],
    "id": 1124779017086705790,
    "localblacklists": ["nu-7"],
    "name": "stelet"
  },
  {
    "_id": {"$oid": "64ff0ea9c6d774368af1d44b"},
    "blacklist": false,
    "fractions": [1142101486352998530, 1114633110454272000],
    "id": {"$numberDecimal": 1125245492822036550},
    "localblacklists": [],
    "name": ".reddle."
  }
]


Коллекция серверов:
[
  {
    "_id": 1142101486352998530,
    "leader": 1059213255534444670,
    "name": "Beta-VI",
    "status": "active",
    "users": [870644766570852350, 778505284984766460]
  },
  {
    "_id": 1114633110454272000,
    "leader": 685855635228590080,
    "name": "PSI-IX",
    "status": "active",
    "users": [860786770689130500, 546368277090140160]
  }
]


Output:
1.1421014863529985e+18
None
1.114633110454272e+18
None
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 3
Buchachalo
@Buchachalo
Может быть ему не нравится формат id? Или тип id?
И как то странно выглядит формат userfrac = factions.find_one({'serverid': int(i)})
factions это коллекция серверов? И вы там ищите id? Почему тогда {'serverid': int(i)} а не int(i)?
Не силен в монге, но выглядит странно.
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
В Python-всякий int не помещается такой айдишник 860786770689130500.
Ответ написан
Комментировать
@nemolayn
Создатель бота Nemo
Может быть в userfrac = factions.find_one({'serverid': int(i)}) вместо factions поставить fractions? (Ошибка в слове тип)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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