【发布时间】:2016-07-12 14:08:41
【问题描述】:
我认为findOneAndUpdate 执行原子操作,所以我假设updateOne 没有。
为什么你会选择updateOne 而不是findOneAndUpdate 并避免原子操作并且必须花费额外的时间检查更新是否是原子的?
我会很感激一些见解或用例。
【问题讨论】:
-
"findOneAndUpdate" 似乎建议“找到一个文档然后更新它”,并且该描述听起来像是它的关键点是一次性完成这两件事并原子化。关于返回的内容,它是“查找”而不是“更新”的扩展的想法,对于经历过 API 命名演变的人来说可能很明显,但对于新来的人来说不是那么明显in. 我认为在文档中突出显示不同的返回类型确实有助于在新人的头脑中弄清楚这一点。
-
@BlakesSeven 我上面所说的都适用于节点驱动程序文档。
-
@JohnnyHK 这个问题是 updateOne/findOneAndUpdate。您标记的副本是 findAndModify/update。 stackoverflow.com/questions/31808786 将是更好的链接副本。
-
@ZachB updateOne/findOneAndUpdate 只是 update/findAndModify 的包装器,所以欺骗仍然适用。
-
@ZachB 我已经添加了你列为替代骗子的那个。可能会帮助某人。