我在通过猫鼬填充人口后,通过文档内部的值匹配查询文档时遇到了一些麻烦。在填充猫鼬后查找
我的模式是这样的:
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;
});
有什么办法来查询像这样直接从猫鼬?
我只是注意到一点担心,如果'用户'是这种方法的大集合。 –
@JasonCust:的确如此!这可能是为什么仍然最好的选择是正确地改变模式(例如,如果你已经有工作应用程序和数据库中的一些数据,这可能不那么有趣)。我也考虑了另一种解决方案:1.获取正确过滤的电子邮件('Emails.find()')的'_id',2:仅加载与这些('Users.find()'匹配的电子邮件的用户'$ in'运算符)。如果您有兴趣,我也可以发布此解决方案的示例。一方面,不加载所有用户文件。另一方面,它似乎更加黑客 - 解决方法 - 是的。 – bardzusny