在mongoose中查找其数组字段完全匹配的文档

时间:2015-08-06 10:08:56

标签: mongodb mongoose

我正在使用Mongoose,并且有这样的架构:

var chat = new mongoose.Schema({
    chatId : String,
    members : [{
        id : String,
        name : String
    }]
});

假设我有两个这样的聊天文档

{
    chatId : 'Edcjjb',
    members : [
        {
            id : 'a1',
            name : 'aaa'
        },
        {
            id : 'b1',
        name : 'bbb'
        }
    ]
}

{
    chatId : 'Fxcjjb',
    members : [
        {
            id : 'a1',
            name : 'aaa'
        },
        {
            id : 'b1',
            name : 'bbb'
        },      
        {
            id : 'c1',
            name : 'ccc'
        }
    ]
}

我想找到所有那些只有特定成员ID的文件。

例如,如果我指定a1和b1 然后只应检索第一个文档,因为第二个文档也包含id c1。

如果我指定a1,b1,c1 然后只应指定第二个文件。

请告诉我如何在mongoose中执行此操作

1 个答案:

答案 0 :(得分:1)

您可以在数组大小上指定一个子句,例如

第一个例子中的

{ members : { $size : 2 } }

{ members : { $size : 3 } }在第二个。

这对你有用吗?

编辑:我还应该提到查询的其他部分应该是

{ "members.id": { $all: [ "a1" , "b1" ] } }

,对于第二个例子,

{ "members.id": { $all: [ "a1" , "b1", "c1" ] } }