我在使用mongoose进行关联查询后,无法通过值匹配在文档中查询。
我的schemas大致如下:
var EmailSchema = new mongoose.Schema({
type: String
});
var UserSchema = new mongoose.Schema({
name: String,
email: [{type:Schema.Types.ObjectId, ref:'Email'}]
});
例如,我想获取所有电子邮件类型为“Gmail”的用户。
以下查询返回空结果:
Users.find({'email.type':'Gmail').populate('email').exec( function(err, users)
{
res.json(users);
});
我不得不像这样使用JS过滤结果:
users = users.filter(function(user)
{
for (var index = 0; index < user.email.length; index++) {
var email = user.email[index];
if(email.type === "Gmail")
{
return true;
}
}
return false;
});
有没有办法直接从mongoose查询类似这样的内容?
_id
(Emails.find()
),2.仅加载与其匹配的电子邮件用户(使用$in
运算符的Users.find()
)。如果您有兴趣,我也可以发布此解决方案的示例。一方面,没有加载所有用户文档。另一方面,它似乎更像是一个hack-ish/workaround-ish解决方案。 - bardzusny{ user:{ firstName:"Hasan", lastName:"Mehmet" } }
我只是累了,打算像你一样过滤结果数组。 - yalcinozer