【发布时间】:2014-07-05 22:56:39
【问题描述】:
来自这些文档:http://mongoosejs.com/docs/api.html#types_array_MongooseArray-%24pop
如果我调用var popped = doc.array.$pop();,Mongoose 是立即从数据库文档中删除该值还是仅在保存后删除?如果我有几个连接,每个连接都调用 $pop(),在一个连接运行文档上的 save() 命令之前,它们会得到相同的值吗?
【问题讨论】:
来自这些文档:http://mongoosejs.com/docs/api.html#types_array_MongooseArray-%24pop
如果我调用var popped = doc.array.$pop();,Mongoose 是立即从数据库文档中删除该值还是仅在保存后删除?如果我有几个连接,每个连接都调用 $pop(),在一个连接运行文档上的 save() 命令之前,它们会得到相同的值吗?
【问题讨论】:
调用$pop 只会影响文档的本地副本,直到调用save。只有这样,数据库文档才会被更新。
所以是的,如果您有多个连接,每个连接都调用 $pop,那么它们都可以获得相同的值,直到其中一个调用 save。
$pop 是一个非常笨拙的 API,除了琐碎的情况外。
【讨论】:
findAndModify 与$pop 运算符一起使用(而不是Mongoose 方法)。