【问题标题】:unable to get count in mongodb collection.find无法在 mongodb collection.find 中获得计数
【发布时间】:2013-03-12 20:33:39
【问题描述】:

我正在将猫鼬 ODM 用于应用程序。我正在尝试计算这样的模型返回的项目数:

 app.post("/verifyLogin",function(request,response){
var usr=request.body.username;
var pass=request.body.password;

response.send(userModel.find({$and:[{username:"admin"},{password:"admin"}]}).count());

});

但我得到了回报:

   {
  "options": {
    "populate": {}
  },
  "_conditions": {
    "$and": [
      {
        "username": "admin"
      },
      {
        "password": "admin"
      }
    ]
  },
  "_updateArg": {},
  "op": "count"
}

我期待一个数字:(

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    这样做的一种方法是使用Model.count 方法,在您的情况下:

    userModel.count({$and:[{username:"admin"},{password:"admin"}]}, function(err, result) {
        if (err) {
           //handle errors
        } else {
           response.send({count :result});
        }
    });
    

    另外:你在 node.js 的世界里——使用回调。

    您现在得到的结果是count 调用Model.find() 结果(我认为这是一个查询对象)的结果,而不是查询结果的计数。

    【讨论】:

    • 按照你的建议,我得到一个空白回复:(
    • 在 mongodb shell 上触发此命令时我得到 '1':db.users.find({$and:[{username:"admin"},{password:"admin"}]})。计数()
    • @beNerd 如果你在回调中console.log(result),你会得到什么?
    • 是的,我得到了一个。但我想知道为什么它不将其作为响应发送。
    • @beNerd 我忘了 res.send 将第一个参数视为响应代码,如果它是一个数字 - 更新了答案。
    猜你喜欢
    • 2012-07-24
    • 2021-06-26
    • 2020-08-25
    • 2021-08-15
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多