我想在更新(单个文档)时推送到数组的开头。我正在使用 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/

10-16 20:49