[{
"_id": 1,
"name": "city1",
"districts": [
{
"id": 5,
"name": "district 1",
"neighborhoods": [
{
"id": 309,
"name": "neighborhood 1"
}
]
},
{
"id": 6,
"name": "district 2",
"neighborhoods": [
{
"id": 52280,
"name": "neighborhood 2"
}
]
}
},
{
"_id": 1,
"name": "city2",
"districts": [
{
"id": 5,
"name": "district 3",
"neighborhoods": [
{
"id": 309,
"name": "neighborhood 3"
}
]
},
{
"id": 6,
"name": "district 4",
"neighborhoods": [
{
"id": 52280,
"name": "neighborhood 4"
},
{
"id": 52287,
"name": "neighborhood 5"
}
]
}
}]
我希望能够检查 3 元组组合是否有效。给定 name、districts.name 和 district.neighborhoods.name 的一些值;我想检查这 3 个值是否确实代表有效组合。 valid 我的意思是它们相互嵌套。
如果给我
city1
、district 1
和neighborhood 1
作为输入,这是一个有效的组合(因为它们相互嵌套)
如果给我
city2
、district 4
和neighborhood 4
作为输入,这是一个有效的组合
如果给我
city1
、district 1
和neighborhood 2
作为输入,这NOT有效组合(因为它们没有相互嵌套)
如果给我
city1
、district 3
和neighborhood 3
作为输入,这NOT一个有效的组合
假设我分别为
name、
districts.name和
districts.neighborhoods.name给出了
city1
、district 1
和neighborhood 1
(有效组合)。输出应该是:
{
"_id": 1,
"name": "city1",
"districts": [
{
"id": 5,
"name": "district 1",
"neighborhoods": [
{
"id": 309,
"name": "neighborhood 1"
}
]
}
}
假设我分别为
name、
districts.name和
districts.neighborhoods.name给出了
city1
、district 1
和neighborhood 2
(NOT有效组合)。输出应该为空或 null 或表示具有这些值的数组元素不存在的东西。
doesLocationExist = await locationDbConnection.find_one(
{ "location" : {
"$elemMatch" :
{"name" : city, "districts.name" : district, "districts.neighborhoods.name": neighborhood}
}
}
)
我希望如果组合有效,这会返回一个文档,但即使组合有效,它也总是返回
None
。
基本上我想做的是使用“路径”(前面提到的三元组输入)检索一个双嵌套数组元素;如果该元素存在,则意味着它是一个有效的组合,否则,它不是。
P.S: 街区和地区名称不是唯一的,所以我不能使用投影只显示感兴趣的数组元素