javascript - 尝试从 mongodb 中的 shell 执行 find() 时出现引用错误 16722

标签 javascript node.js mongodb mongoose referenceerror

我是 mongodb 的新手,我遇到的问题似乎很简单,但谷歌给了我一堆似乎不相关的 mapreduce 场景。

我有一个集合,里面有一个文档。如果我尝试按其中一个字段进行搜索,则会收到错误:

> db.users.find('u_email', "")
error: { "$err" : "ReferenceError: u_email is not defined", "code" : 16722 }

然后 mongoDB 输出如下错误:

Tue Dec 03 02:55:13.085 [conn1] assertion 16722 ReferenceError: u_email is not defined ns:test.users query:{ $where: "u_email" }

我的 Mongoose 用户架构有 u_email 字段:

var userSchema = new mongoose.Schema({
    'u_id'      : {type:String, unique:true},
    'u_email'   : {type:String, required:true, unique:true}, 
    'u_name'    : {'first'  : {type:String}, //first name
                   'last'   : {type:String} //last name 
                  },
});

不确定这里发生了什么。我尝试在我的 app.js 中使用 mongoose 执行 findOne() 操作,但它没有显示任何内容。这很奇怪,因为它返回正确的 _id,但没有返回其他内容:

var email = email@dns.com;
User.findOne('u_email', email).exec(function (err, doc) {
    console.log(doc);
}

结果:

{ _id: 529d8cfb03820d5410000002, u_name: {} }

这是我的 db.users.getIndexes() 供引用:

> db.users.getIndexes()
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "test.users",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "u_id" : 1
                },
                "unique" : true,
                "ns" : "test.users",
                "name" : "u_id_1",
                "background" : true,
                "safe" : null
        },
        {
                "v" : 1,
                "key" : {
                        "u_email" : 1
                },
                "unique" : true,
                "ns" : "test.users",
                "name" : "u_email_1",
                "background" : true,
                "safe" : null
        }
]

最佳答案

MongoDB shell 的查询格式为 { KEY : VALUE, ... }:

> db.users.find({ 'u_email' : '' })

对于 Mongoose 来说也是如此:

User.findOne({ 'u_email' : email }).exec(function (err, doc) {
  console.log(doc);
});

关于javascript - 尝试从 mongodb 中的 shell 执行 find() 时出现引用错误 16722,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345840/

相关文章:

javascript - Fs 没有正确保存文件以及如何简化此代码

ruby-on-rails - Mongoid:按嵌套子值排序

javascript - 更新 Meteor 集合中的数组元素

javascript - promise 替换多次调用的回调

javascript - IE10 上的 Bootstrap 兼容性问题

JSON 对象数组上的 Javascript lodash 范围不返回

mongodb - 字段和模式级别的 Mongoose 索引

javascript - 如何按程序设置 Javascript getter/setter? (或者实际上是闭包范围)

node.js - 如何在 github 操作的特定文件夹中运行 CI 步骤

node.js - 如何在我的 node.js 应用程序中使用 AWS DAX