Mongoose更新推送到数组的开始

时间:2014-06-29 07:51:54

标签: node.js mongodb mongoose

我想在更新时推送到数组的开头(单个文档)。我使用的是findOneAndUpdate,但似乎是mongoose doesn't support $position operator。我可以通过Model.collection.update

使用本机驱动程序来实现此目的
{
    '$push': {
        post_IDs: {
            '$each': [articles],
            '$position': 0
        }
    }
}

但本机驱动程序不会更新文档。这就是为什么我不能在这里使用它的原因。有没有办法在回调中接收更新的文档时推送到数组的开头 - 除了使用find()后跟save()

1 个答案:

答案 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方法默认的内容,但是这个没有。

相关问题