【问题标题】:Find the documents in mongoose whose array fields exactly match查找 mongoose 中数组字段完全匹配的文档
【发布时间】:2015-08-06 18:45:35
【问题描述】:

我正在使用 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 那么只应指定第二个文档。

请告诉我如何在猫鼬中做到这一点

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

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

    { members : { $size : 2 } } 在您的第一个示例中,并且

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

    这对你有用吗?

    编辑:我还应该提到查询的另一部分应该是

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

    对于第二个例子,

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

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 2020-01-09
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2019-08-17
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多