我正在使用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中执行此操作
答案 0 :(得分:1)
您可以在数组大小上指定一个子句,例如
第一个例子中的 { members : { $size : 2 } }
和
{ members : { $size : 3 } }
在第二个。
这对你有用吗?
编辑:我还应该提到查询的其他部分应该是
{ "members.id": { $all: [ "a1" , "b1" ] } }
,对于第二个例子,
{ "members.id": { $all: [ "a1" , "b1", "c1" ] } }