Как проверить, существует ли пара ключ-значение в словаре в коллекции в MongoDB

#python-3.x #mongodb #dictionary #pymongo #pymongo-3.x

Вопрос:

Поэтому я написал этот код на python, который должен определить, существует ли определенная пара ключей и значений в словаре в коллекции MongoDB с помощью PyMongo.

Вот функция —

 def check_for_item(user, item):
    item = db.collection.find({
        "uid": user.id,
        f"inv.{item}": {
            "$in": [
            1,
            10000
            ]
        }
    })
    return bool(item)
 

Теперь это не работает, потому что, даже если в словаре есть объект, которого НЕТ, он по какой-то причине возвращает значение True, и я понятия не имею, почему это происходит.

Вот как выглядит моя коллекция: https://cdn.discordapp.com/attachments/894468562578735174/894571908648018000/unknown.png

Моя коллекция в качестве словаря: {'_id': ObjectId('6159a87c6f95d5b44277fd3d'), 'uid': 718712985371148309, 'wallet': 500, 'bank': 1000, 'bankl': 1500, 'job': 'None', 'salary': 0, 'inv': {'lock': 1}}

Здесь ^^^, как вы можете видеть, есть сообщение под названием «inv», а под ним пара ключ-значение под названием «блокировка: 1».

Итак, как мне заставить это работать?

Заранее спасибо.

Комментарии:

1. похоже, что inv-это объект(не массив) с одной блокировкой поля, может быть, это ? это то, что тебе нужно?

2. Но что, если число блокировок в inv больше 1?

3. блокировка-это массив?

4. Это выглядит так: Inv: {«блокировка»: 1}