在 MongoDB 中,如何根据对象的值对对象进行排序?
Posted
技术标签:
【中文标题】在 MongoDB 中,如何根据对象的值对对象进行排序?【英文标题】:In MongoDB how do I sort an object based on their values? 【发布时间】:2021-01-08 18:46:20 【问题描述】:Book 是一个可供用户投票选择的集合。当用户在客户端点击一个赞按钮时,投票会增加 1。我希望根据投票数按降序对集合进行排序,这会反映在前端。
投票正在更新并显示在前端,我只是无法使用排序功能。
update: function (req, res)
console.log("this is reqbody" + JSON.stringify(req.body))
db.Book
.findOne( bookID: req.body.bookID , (err, result) =>
console.log(result);
console.log(result.vote)
// let voted = result.vote + 1;
db.Book.updateOne( _id: result._id , vote: result.vote + 1 )
db.Book.find().sort(vote: 'decending').exec(function(err, docs)
)
.then(dbModel =>
console.log(JSON.stringify(dbModel))
res.json(dbModel)
)
)
,
【问题讨论】:
而不是 findOne 然后更新。您应该使用 findOneAndUpdate 并使用 $inc 运算符来增加投票。 这能回答你的问题吗? In Mongoose, how do I sort by date? (node.js) 【参考方案1】:根据documentation,您应该使用1
和-1
在sort()
mongodb 调用中订购您的订单。
在 sort 参数中指定要排序的一个或多个字段,值 1 或 -1 分别指定升序或降序。
db.Book.find().sort(vote: -1)
【讨论】:
感谢您指出这一点。在文档中完全忽略了这一点。能够使用值 -1 使其工作。以上是关于在 MongoDB 中,如何根据对象的值对对象进行排序?的主要内容,如果未能解决你的问题,请参考以下文章