我需要在 mongodb 中创建一个文档,然后立即希望它在我的应用程序中可用。执行此操作的正常方法是(在 Python 代码中):
doc_id = collection.insert({'name':'mike', 'email':'mike@gmail.com'})
doc = collection.find_one({'_id':doc_id})
这有两个问题:
- 对服务器的两个请求
- 不是原子的
因此,我尝试使用该find_and_modify
操作在这样的帮助下有效地执行“创建和返回” upserts
:
doc = collection.find_and_modify(
# so that no doc can be found
query= { '__no_field__':'__no_value__'},
# If the <update> argument contains only field and value pairs,
# and no $set or $unset, the method REPLACES the existing document
# with the document in the <update> argument,
# except for the _id field
document= {'name':'mike', 'email':'mike@gmail.com'},
# since the document does not exist, this will create it
upsert= True,
#this will return the updated (in our case, newly created) document
new= True
)
这确实按预期工作。我的问题是:这是否是完成“创建和返回”的正确方法,还是我缺少任何问题?