【发布时间】:2015-09-28 14:51:14
【问题描述】:
我有 Mongo 收藏
{ A: 1, B: 1, C: 1 }
{ A: 1, B: 1, C: 2 }
{ A: 1, B: 2, C: 1 }
{ A: 1, B: 2, C: 2 }
{ A: 2, B: 1, C: 1 }
{ A: 2, B: 1, C: 2 }
{ A: 2, B: 2, C: 1 }
{ A: 2, B: 2, C: 2 }
通过 A、B 和 C 的复合索引。现在我想查询大于 { A: 2, B: 1, C: 1 } 的记录。结果应该是
{ A: 2, B: 1, C: 2 }
{ A: 2, B: 2, C: 1 }
{ A: 2, B: 2, C: 2 }
我想准确地使用范围查询(不是排序 + 跳过)。有可能吗?
更新: 抱歉,我的例子不太准确。
- 结果不是更大,而是大于或等于。
- 我想查询整个字段集 A、B 和 C,而不是单独查询。
感谢@BlakesSeven 的建议。
这是另一个例子:
大于{ A: 1, B: 1, C: 2 }是
{ A: 1, B: 2, C: 1 }
{ A: 1, B: 2, C: 2 }
{ A: 2, B: 1, C: 1 }
{ A: 2, B: 1, C: 2 }
{ A: 2, B: 2, C: 1 }
{ A: 2, B: 2, C: 2 }
更新 2:
对不起我的小问题。我试着再解释一次:
我的集合按几个字段(A、B 和 C)排序。我使用compound indexes{ A: 1, B: 1, C: 1 }。排序集合:
1: { A: 1, B: 1, C: 1 }
2: { A: 1, B: 1, C: 2 }
3: { A: 1, B: 2, C: 1 }
4: { A: 1, B: 2, C: 2 }
5: { A: 2, B: 1, C: 1 }
6: { A: 2, B: 1, C: 2 }
7: { A: 2, B: 2, C: 1 }
8: { A: 2, B: 2, C: 2 }
我有一些记录(例如 5),我想查询按此顺序(6、7、8)更大的记录。
【问题讨论】:
-
我会注意到,在您要求的任何方面,所需的结果都不是“大于”,而是“大于或等于”。这也是一个明显的“抽象”问题,可能与您的实际用例无关。要获得“真实”的答案,请展示您的“真实”用例,以便可以清楚地提供适合您真实需求的答案,并避免与 cmets 中的受访者争论。
-
那么 A、B 或 C 需要更大吗?对吗?
-
@ThomasBormans,没有。所有记录都按 A、B 和 C 排序。我想从特定位置查询记录(见示例)
标签: mongodb mongodb-query