sorting和Mongoose.js findOneAndRemove
根据Mongoose.js文档,应该可以将sort指令添加到直接传递到数据库的方法,如findOneAndUpdate
或findOneAndRemove
。
我试图抓住一个匹配条件的文档,并将其从数据库中删除。 到目前为止,我已经尝试过:
Model.findOneAndRemove({foo: 'bar'}) .sort({created_at: 'asc'}) .exec(callback);
和
Model.findOneAndRemove({foo: 'bar'}, {sort: {created_at: 'asc'}}).exec(callback);
这两者似乎都忽略了sorting指令,只是简单地find并删除最近添加的匹配文档,而不是具有最早的created_at
date的文档。
发出查询作为findOne
,然后删除callback函数中的文档按预期工作,例如,
Model.findOne({foo: 'bar'}).sort({created_at: 'asc'}) .exec(function (err, doc) { doc.remove(); });
返回并删除具有最早created_at
date的文档,所以我相信findOneAndRemove
查询中的sorting(与常规查询不同,直接发送到MongoDB)必须使用不同的语法。
使用findOne
而不是findOneAndRemove
是一个可行的select,但我更希望操作是primefaces的,如果可能的话。
是否有可能像findOneAndUpdate
或findOneAndRemove
一样使用Mongoose.js查询的sorting指令,如果是,则使用什么语法?
也许这将有助于改变这种状况:
{created_at: 1}
'要么'
{created_at: -1}
(分别为上升或下降)。 我目前正在努力与findOneAndRemove包装以及。 它似乎没有完美的工作。
基于这里的API文档,这似乎是在mongoose.js的v3.8.18中修复的。
它很可能是早期修复的,但这是我使用的版本。