Pymongo如何查看文档是否已存在多个键

Pymongo how to see if document already exists with multiple keys

我无法查看文档中的多个键是否与用户提供的内容一致。用户可以在 pymongo 中创建文档,但如果具有相同键值的文档已经存在,那么我希望它更新现有文档。

这是我添加新项目的代码:

async def create_new_shop(user_id, amount, price, item):
    await python_bot.insert_one({"_id": user_id, "item": item, "price": price, "amount": amount})

这是我检查它是否已经存在的代码(我只想要 _id 和项目):

async def check_item_exists(user_id, item):
    check = python_bot.find_one({'$and': [{"_id": user_id},
                                          {"item": item}]})
    print(check)
    return check is not None

每当打印支票时我得到:

<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/futures.py:384]>

感谢任何帮助。如果您需要更多信息,我可以提供。

使用启用 upsert=True 选项的 update_one 方法。

thon_bot.update_one({
     "_id": user_id,
}, {
     "$set": {
          "item": item, 
          "price": price, 
          "amount": amount
     }
}, upsert=True)

这将根据传递的 user_id 值更新,如果文档不存在则插入。