我想在更新时推送到数组的开头(单个文档)。我使用的是findOneAndUpdate
,但似乎是mongoose doesn't support $position operator。我可以通过Model.collection.update
{
'$push': {
post_IDs: {
'$each': [articles],
'$position': 0
}
}
}
但本机驱动程序不会更新文档。这就是为什么我不能在这里使用它的原因。有没有办法在回调中接收更新的文档时推送到数组的开头 - 除了使用find()
后跟save()
?
答案 0 :(得分:2)
Mongoose不直接支持新运算符,但如果你的mongoose是最近发布的版本,那么底层驱动程序依赖应该是最近的。
你得到了基础"节点本地"通过使用模型上的.collection
访问器来驱动函数:
Model.collection.findAndModify(
{ field: "value" },
[],
{
"$push": {
"post_IDs": {
"$each": [articles],
"$position": 0
}
}
},
{ new: true},
function(err,doc) {
}
);
该方法存在来自本机驱动程序的.findAndModify()
。语法略有不同。首先是"查询"那么"排序"数组,然后"更新"文献。此外,选项设置为返回" new"文档,这是mongoose方法默认的内容,但是这个没有。