我想在更新(单个文档)时推送到数组的开头。我正在使用 findOneAndUpdate
但它看起来像 mongoose doesn't support $position operator 。我可以通过 Model.collection.update
使用 native 驱动程序来实现这一点
{
'$push': {
post_IDs: {
'$each': [articles],
'$position': 0
}
}
}
但 native 驱动程序不会返回更新的文档。这就是为什么我不能在这里使用它。除了使用
find()
后跟 save()
之外,有什么方法可以在回调中接收更新的文档时推送到数组的开头? 最佳答案
Mongoose 不直接支持 new 运算符,但如果您的 mongoose 是最新版本,则底层驱动程序依赖项应该足够新。
通过在模型上使用 .collection
访问器,您可以获得底层的“Node native ”驱动程序函数:
Model.collection.findAndModify(
{ field: "value" },
[],
{
"$push": {
"post_IDs": {
"$each": [articles],
"$position": 0
}
}
},
{ new: true},
function(err,doc) {
}
);
方法是来自 native 驱动程序的
.findAndModify()
。语法有点不同。首先是“查询”,然后是“排序”数组,然后是“更新”文档。此外,选项设置为返回"new"文档,这是 mongoose 方法的默认值,但这个没有。关于node.js - Mongoose 更新推送到数组的开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24474160/