【发布时间】:2020-04-13 00:32:36
【问题描述】:
我有两个系列。我正在尝试将 Collection 2 的文档添加到 Collection 1,如果 Collection 2 中的数字 1 和数字 2 在 Collection 1 中指定的某个范围内。FYI Collection 1 中的 ObjectId 和 Collection 2 中的 ObjectId 指的是两个不同的项目/产品,因此我无法加入此 ID 上的两个集合。
集合 1 中的示例文档:
{'_id': ObjectId('4321'),
'number1_lb': 61.205672407820025,
'number1_ub': 61.24170844385606,
'number2_lb': -149.75074963516136,
'number2_ub': -149.71471359912533}
集合 2 中的示例文档:
{'_id': ObjectId('1234'),
'number1': 1.282298,
'number2': 103.8475}
我想要输出:
{'_id': ObjectId('4321'),
'number1_lb': 61.205672407820025,
'number1_ub': 61.24170844385606,
'number2_lb': -149.75074963516136,
'number2_ub': -149.71471359912533,
'recs': [ObjectId('3456'), ObjectId('4567'),...]
我认为带有管道的查找阶段会起作用。我的代码目前如下:
{"$lookup":{
"from": "Collection 2",
"let":{
"number1_lb":"$number1_lb",
"number1_ub":"$number1_ub",
"number2_lb":"$number2_lb",
"number2_ub":"$number2_ub"
},
"pipeline": [
{"$match":
{"$expr":
{"$and":[
{"$gte":["$number1","$$number1_lb"]},
{"$gte":["$number2","$$number2_lb"]},
{"$lte":["$number1","$$number1_ub"]},
{"$lte":["$number2","$$number2_ub"]}
]}}}
],
"as": "recs"
}}
但是运行上面的命令没有输出。我是不是做错了什么??
【问题讨论】:
标签: mongodb pymongo aggregation