假设我们有一个包含 2 列的 mongodb 集合:From、To。现在我想选择范围 From / To 与另一个范围相交的行。
例如:
- 对象 #1:从 = 100,到 = 200
- 对象 #2:从 = 150,到 = 300
- 对象 #3:从 = 210,到 = 230
- 对象 #4:从 = 290,到 = 300
- 对象 #5:从 = 347,到 = 349
- 对象 #6:从 = 400,到 = 450
现在我们有了范围:201-350。所以在这个范围内我有结果中的对象:
- 对象 #2
- 对象 #3
- 对象 #4
- 对象 #5
且对象#1/对象#6未包含在选择结果中。
在这种情况下,查询是什么?
考虑使用聚合查询来获得结果。
$range
- 使用$range
运算符生成一个从 201 到 350 的数字数组。$filter
From
- 过滤和字段内的数字To
。$ne
- 使用从2生成的数组过滤文档,该数组不是空数组。演示@Mongo Playground
或者,与
$anyElementTrue
和$map
运算符一起使用。您可以在查询中应用.find()
。演示 2 @ Mongo Playground