我是 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" }
我的猫鼬用户模式有 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
}
]