【问题标题】:MongoDB issue in query returning value from user查询用户返回值时出现 MongoDB 问题
【发布时间】:2019-08-26 08:33:46
【问题描述】:

我正在使用带有 Nodejs 的 MongoDB,我正在尝试查找特定用户的 usertype 值,所以我得到了这个:

var myQuery= { username: req.body.username }, { "usertype": 1 };
 dbo.collection("usercollection").find(myQuery, function(err, obj) { ...

我需要返回的是来自该特定用户的 usertype 的值,但它一直说我有语法错误:预期。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript node.js mongodb nosql


    【解决方案1】:

    由于您试图在一行中为find 方法定义查询和projection,因此出现语法错误,请尝试:

    var myQuery= { username: req.body.username };
    var options = { projection: { usertype: 1 } };
    var cursor = dbo.collection("usercollection").find(myQuery, options)
    

    【讨论】:

    • 它在 usertype 上返回 1 ...它是一个字符串 ...我不希望 usertype 为 1 ...我只需要获取任何 usertype 值的值...我可能没有正确解释自己。
    • 如果您使用 Mongo 的 node.js 驱动程序,那么您需要添加 projection 作为顶级属性,检查我修改后的答案
    • 试过但同样的问题 console.log(obj);返回很多废话,没有数据库字段信息
    • @monroe2019 我认为原因是您正在处理 node.js 驱动程序中的游标。您可以在这里查看stackoverflow.com/questions/25507866/… 以了解如何使用它们
    【解决方案2】:

    我建议先执行查找操作以获取光标,然后从光标中提取数据,如下所示,

    var myQuery= { username: req.body.username };
    dbo.collection("usercollection").find(myQuery, {  projection: { usertype: 1}  }).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
      });
    

    在你的情况下,上面的代码可以正常工作。

    【讨论】:

    • 另外,find的第二个参数需要一个单独的投影对象,请查看上面的代码!
    • 它在 usertype 上返回 1 ...它是一个字符串 ...我不希望 usertype 为 1 ...我只需要获取任何 usertype 值的值...我可能没有正确解释自己。
    • 移除投影并检查它是否返回完整的用户对象!
    • 我试过 console.log(obj);它返回的信息太多了。
    • 并且还包含用户类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2017-06-01
    相关资源
    最近更新 更多