mongoose更新推到数组的开始

我想在更新时推送到数组的起始处(单个文档)。 我正在使用findOneAndUpdate但似乎mongoose不支持$ position操作符 。 我可以通过使用Model.collection.update的本地驱动程序来实现此Model.collection.update

 { '$push': { post_IDs: { '$each': [articles], '$position': 0 } } } 

但本机驱动程序不会返回更新的文档。 这就是为什么我不能在这里使用它。 除了使用find()save()之外,还有什么办法可以在callback中接收更新后的文档时推送到数组的开头?

Mongoose不直接支持新的操作符,但是如果您的mongoose是最近的版本,那么底层驱动程序依赖性应该是最近的了。

通过在模型上使用.collection访问器,可以获得底层的“节点本地”驱动程序function:

 Model.collection.findAndModify( { field: "value" }, [], { "$push": { "post_IDs": { "$each": [articles], "$position": 0 } } }, { new: true}, function(err,doc) { } ); 

那里的方法是从本地驱动程序.findAndModify() 。 语法有点不同。 首先是“查询”,然后是“sorting”数组,然后是“更新”文件。 此外,选项设置为返回“新”文件,这是mongoose方法默认的,但这不是。