Javascript 排序和Mongoose.js findOneAndRemove

Javascript 排序和Mongoose.js findOneAndRemove,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,根据Mongoose.js文档,应该可以向直接传递到数据库的方法添加排序指令,如findOneAndUpdate或findOneAndRemove 我试图获取一个符合条件的文档,并将其从数据库中删除。到目前为止,我已经尝试: Model.findOneAndRemove({foo: 'bar'}) .sort({created_at: 'asc'}) .exec(callback); 及 两者似乎都忽略了排序指令,只是查找并删除最近添加的匹配文档,而不是在日期创建最早的文档 以

根据Mongoose.js文档,应该可以向直接传递到数据库的方法添加排序指令,如
findOneAndUpdate
findOneAndRemove

我试图获取一个符合条件的文档,并将其从数据库中删除。到目前为止,我已经尝试:

Model.findOneAndRemove({foo: 'bar'})
    .sort({created_at: 'asc'})
    .exec(callback);

两者似乎都忽略了排序指令,只是查找并删除最近添加的匹配文档,而不是在日期创建最早的
文档

findOne
的形式发出查询,然后在回调函数中删除文档,如:

Model.findOne({foo: 'bar'}).sort({created_at: 'asc'})
    .exec(function (err, doc) { 
        doc.remove(); 
    });
返回并删除在
日期创建的最早的
文档,因此我认为
findOneAndRemove
查询中的排序(与常规查询不同,直接交给MongoDB)必须使用不同的语法

使用
findOne
而不是
findOneAndRemove
是一个可行的选择,但如果可能的话,我更希望操作是原子的


是否可以在Mongoose.js查询中使用排序指令,如
findOneAndUpdate
findOneAndRemove
,如果可以,使用什么语法?

可能有助于将排序条件更改为:

    {created_at: 1}
“或者”

(分别用于上升或下降)。 我目前也在努力使用FindOnAndRemove包装器。它似乎不能完美地工作。

基于的,它似乎在的v3.8.18中得到了修复


这很可能是之前修复的,但这是我正在使用的版本。

对我来说似乎是个bug,就像你说的,猫鼬医生说可以这么做,但我无法让它工作。看看你是否能给猫鼬的工作人员提交一个bug或者发送一封电子邮件。
Model.findOneAndRemove({foo: 'bar'}, {sort: {created_at: -1}}, (err, doc) => {

})
    {created_at: -1}
Model.findOneAndRemove({foo: 'bar'}, {sort: {created_at: -1}}, (err, doc) => {

})