【发布时间】:2015-02-11 08:33:13
【问题描述】:
我有一份包含以下文件的文件:
{ "f" : [ [ 1, 2, 3], [4, 5, 6] ] } // should match because of [1, 2, 3]
{ "f" : [ [ 2, 1, 3], [4, 5, 6] ] } // should match because of [2, 1, 3]
{ "f" : [ [ 1, 2, 4], [4, 5, 6] ] } // should NOT match
在这个集合中,我想匹配文档,该文档在“f”字段的一个数组中包含一个包含 1、2 和 3 的数组。
到目前为止我已经尝试过:
db.mytest.find({ f: { $elemMatch: { $all: [1,2,3] } } } )
我希望这个查询能够工作,但我不明白为什么它不能。我没有匹配任何文件。
db.mytest.find({ f: { $elemMatch: { $elemMatch: { $all: [1,2,3] } } } })
这也行不通。
db.mytest.find({ f: { $all: [[1,2,3]] } })
这可行,但元素必须按准确顺序排列。当输入数组为 2、1、3 时,我也希望能够匹配。一种可能的解决方案必须是始终按升序存储元素并使用此查询。
db.mytest.find({ f: { $elemMatch: { $elemMatch: { $in: [1, 2, 3] } } } })
这可行,但它匹配包含 1、2 或 3 中任何一个的所有文档。我只想要在单个数组中恰好包含 1、2 和 3 的文档。
我要查找的查询是什么?
【问题讨论】:
标签: mongodb mongodb-query