【问题标题】:Find document that matches same array elements in MongoDB在 MongoDB 中查找与相同数组元素匹配的文档
【发布时间】:2016-02-17 02:26:09
【问题描述】:

想想 MongoDB 中的这些文档:

{id:1, people:['james', 'john', 'candy']}
{id:2, people:['james', 'john', 'candy', 'gary']}

无论数组元素的顺序如何,我如何才能找到仅匹配 完整集 数组元素的文档。

例如,如果我输入这个:

input=[ 'candy', 'james', 'john' ]

匹配的响应应该是文档id:1

如果我有任何其他文档与完全相同的 3 人,无论他们在 MongoDB people 数组中的顺序如何,它也应该匹配。

我试过$all,但没有成功。

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    你可以使用$size来限制数组的大小:

    db.test.find({
       "people": { $all: [ 'james', 'john', 'candy' ], $size: 3 }
    })
    

    【讨论】:

      【解决方案2】:

      作为您的问题的解决方案,请尝试在 mongodb 中执行以下查询。

      db.getCollection('collection').find({"people":{$all:[ 'james', 'john', 'candy' ]}})
      

      上述查询将执行数组元素的精确匹配,无论它们的顺序如何

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-05
        相关资源
        最近更新 更多