我有一个应用程序,我允许用户访问其他第三方应用程序并从中获取数据并执行一些可视化。为方便用户,我只要求他们通过POST
请求发送一次凭据,然后将它存储在Mongodb中,所以下次他们要求数据而不必一次又一次地传递凭证。现在我打算避免在我的Mongodb数据库中重复。所以即使用户发送他们的凭证,我也不会重新插入它而不是我使用upsert
选项。
users.update(doc, doc, upsert=True)
这样可以解决问题但现在当用户不发送任何凭据时,mongodb会为特定请求创建一个对象ID,并将None置于每个字段的值
{'account_id': None, 'password': None, 'username': None}
我已针对此问题检查了以下资源,但建议特定于mongodb而不是pymongo。
Avoid insertion in mongoDB Without Data
如何确保不将具有空值的数据插入数据库?
答案 0 :(得分:1)
您可以使用简单的if来确保doc不是None。
if doc:
users.update(doc, doc, upsert=True)
数据库级解决方案是创建一个您在问题中链接的pointed at resource集合架构。验证器将保证正确的插入和插入。