Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB查询嵌套数组搜索_Mongodb_Database - Fatal编程技术网

MongoDB查询嵌套数组搜索

MongoDB查询嵌套数组搜索,mongodb,database,Mongodb,Database,我需要使用mongoDb查询包含嵌套数组的文档。我看到很多使用简单$in运算符的示例。唯一的问题是,我需要严格检查正确的子集 考虑以下文档 {data: [[1,2,3], [4,5,6]]} 查询需要能够获取所有[1,2,3]的文档,其中1,2,3可以是任何顺序,这排除了以下查询,因为它只会以正确的顺序匹配 {data:{$elemMatch:{$all:[[1,2,3]]}}} 我还尝试了嵌套的$elemMatch操作符,但没有成功,因为$in操作符将返回文档,即使只有一个元素匹配,如下

我需要使用mongoDb查询包含嵌套数组的文档。我看到很多使用简单$in运算符的示例。唯一的问题是,我需要严格检查正确的子集

考虑以下文档

{data: [[1,2,3], [4,5,6]]}
查询需要能够获取所有[1,2,3]的文档,其中1,2,3可以是任何顺序,这排除了以下查询,因为它只会以正确的顺序匹配

{data:{$elemMatch:{$all:[[1,2,3]]}}}
我还尝试了嵌套的$elemMatch操作符,但没有成功,因为$in操作符将返回文档,即使只有一个元素匹配,如下面所示

 {data:{$elemMatch:{$elemMatch:{$in:[1,4]}}}}

不确定您的实际查询是什么样子的,但这应该满足您的需要:
查找{{FaseField:{ $元素匹配:{$In:[1,2,3}}}}

< p>我没有一个完整的答案,没有太多的时间,因为我在这里晚了,但我会考虑

如果尚未使用聚合管道,则使用聚合管道而不是查询 使用$unwind运算符解构嵌套数组 使用$sort对数组的内容进行排序,这样您现在就可以进行比较了 使用$match筛选出不符合数组子集值的数组,因为现在可以根据顺序进行检查。 使用$group可根据_id值将结果重新分组 参考: 将为您提供上述各项的信息


通过快速搜索,我提出了一个类似的问题/示例,可能会有所帮助:

我宁愿不要,因为正在使用的find函数会将查询转换为聚合。单元测试只是测试文档的插入,所以我可以继续使用聚合。我会考虑一下,然后等着看是否有使用查询的可能解决方案。我找不到一种使用查找的方法,这就是我建议聚合的原因。我相信使用上面的大纲,你应该能够实现你想要做的事情。请回去仔细阅读我的问题。特别是,我明确指出唯一的问题是,我需要严格检查适当的子集。好的,关于你问题的子集部分,你看过setIsSubset了吗?