使用$ all匹配另一个数组内的数组内的值

时间:2015-02-26 17:53:00

标签: php arrays mongodb

我有以下mongo文档结构

  "search": [
    [
      "keyword",
      "match"
    ],
    [
      "testing",
      "something",
      "serious"
    ]
]

我想找到数组内的关键字数组与$all查询匹配的文档。

例如,如果搜索只有1级我会做

{'search': {'$all': ['keyword','match']}}

我尝试过使用:

{'search': {'$elemMatch': {'$all': ['keyword','match']}}}

但我没有结果。

1 个答案:

答案 0 :(得分:0)

如果您事先知道关键字数组,并且想要在search数组中匹配包含该数组的文档,则可以使用如下的简单查询。

db.collection.find({"search": ["keyword", "match"]});

那应该返回你的样本文件。另一方面,如果数组未被search内的元素完全包含,则它不会返回任何内容。例如,以下查询不会返回您的示例文档。

db.collection.find({"search": ["keyword", "match", "testing"]});