Node.js 在MongoDB中,如何根据对象的值对对象进行排序?
Book是一个可以由用户投票的集合。当用户单击客户端上的like按钮时,投票增加1。我希望集合根据投票数按降序排序,这将反映在前端 投票正在更新,并显示在前端,我只是没有得到排序功能的工作Node.js 在MongoDB中,如何根据对象的值对对象进行排序?,node.js,reactjs,mongodb,mongoose,mongoose-schema,Node.js,Reactjs,Mongodb,Mongoose,Mongoose Schema,Book是一个可以由用户投票的集合。当用户单击客户端上的like按钮时,投票增加1。我希望集合根据投票数按降序排序,这将反映在前端 投票正在更新,并显示在前端,我只是没有得到排序功能的工作 update: function (req, res) { console.log("this is reqbody" + JSON.stringify(req.body)) db.Book .findOne({ bookID: req.body.bookID
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)
}
)
}
)
},
根据,您应该使用1
和-1
在sort()
mongodb调用中订购订单
在sort参数中指定要排序的一个或多个字段,值为1或-1分别指定升序或降序排序
db.Book.find({}).sort({vote:-1})
而不是执行findOne然后更新。您应该执行findOneAndUpdate并使用$inc运算符增加投票。这是否回答了您的问题?谢谢你指出这一点。在文档中完全忽略了这一点。能够使用值-1使其工作。