我想知道find_one_and_update
返回的文档是新的(插入的(还是更新的文档。
我的查询如下:
predicted_user = db.predictions.find_one_and_update({'emp_name': user_name},
{'$currentDate': {"createdAt": True}},
upsert=True,
return_document=ReturnDocument.AFTER)
predicted_user可以是:
- 集合中的新用户,由于
upsert
.
由于 update
命令,其createdAt
已更新的旧用户。
我想实现类似
if predicted_user is new:
# Do send notifications.
else:
# Don't send notifications.
以上可以通过多个查询来实现,但我想将其保留为单个(如果可能的话(。
您将需要实现文档版本控制。 例如,如果您将文档版本保留在_version
字段中,则 update 参数可以是:
{
'$currentDate': { "createdAt": True },
'$inc': { '_version': 1 },
'$setOnInsert': { '_version': 0 }
}
然后,您可以检查_version的值。对于更新插入的文档,它将为 0,对于更新的文档,它将高于此值的任何内容。
您需要更新现有文档以在部署期间手动添加字段:
{'$set': { '_version': 1 }}