Javascript 关于数组的奇异mongoose查询

Javascript 关于数组的奇异mongoose查询,javascript,mongoose,Javascript,Mongoose,我在mongoose的一个查询中遇到了问题,我正在寻求您的建议: 如果元素在数组中,我需要从集合中检索一些元素。很难解释,这里的交易是:如果当前用户是收件人,我需要获得消息 var Message = new Schema({ recipients: [{ pseudo: {type: String}, slug: {type: String, index: true} }], sender: { pseudo: {type

我在mongoose的一个查询中遇到了问题,我正在寻求您的建议:

如果元素在数组中,我需要从集合中检索一些元素。很难解释,这里的交易是:如果当前用户是收件人,我需要获得消息

var Message = new Schema({
    recipients: [{
        pseudo: {type: String},
        slug: {type: String, index: true}
    }],
    sender: {
        pseudo: {type: String},
        slug: {type: String, index: true}
    },
    content: String,
    dateCreated: {type: Date, default: Date.now},
    readBy: [{
        pseudo: String,
        slug: String,
        date: Date
    }]
});
同样,在检查未读消息时,如果我的用户不在readBy数组中,我需要检索一些消息

我知道如何使用$in操作符,但它的工作方式正好相反。有可能实现这种查询吗


编辑:我发现了$elemMatch操作符,它可以解决我的第一个问题,但我不确定如何将它用于未读消息。是否可以在其中添加NOT子句?

您可以使用运算符。是的,它确实有效,$NOT后跟$elemMatch!非常感谢。