我是 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/