Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在MongoDB中,如何根据对象的值对对象进行排序?_Node.js_Reactjs_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js 在MongoDB中,如何根据对象的值对对象进行排序?

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

Book是一个可以由用户投票的集合。当用户单击客户端上的like按钮时,投票增加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)
          }
          )
      }
      )
  },
根据,您应该使用
1
-1
sort()
mongodb调用中订购订单

在sort参数中指定要排序的一个或多个字段,值为1或-1分别指定升序或降序排序

db.Book.find({}).sort({vote:-1})

而不是执行findOne然后更新。您应该执行findOneAndUpdate并使用$inc运算符增加投票。这是否回答了您的问题?谢谢你指出这一点。在文档中完全忽略了这一点。能够使用值-1使其工作。