我有以下简化集合:(考虑引用所有street_names
)
{
city_id: 1,
city_name: "city1",
streets: [
{
street_id: 1,
street_name: street1
},
{
street_id: 2,
street_name: street2
},
{
street_id: 3,
street_name: street3
},
{
street_id: 4,
street_name: street4
},
{
street_id: 5,
street_name: street5
}
]
},
{
city_id: 2,
city_name: "city2",
streets: [
{
street_id: 1,
street_name: street1
},
{
street_id: 2,
street_name: street2
},
{
street_id: 3,
street_name: street3
},
{
street_id: 4,
street_name: street4
},
{
street_id: 5,
street_name: street5
},
{
street_id: 6,
street_name: street6
},
{
street_id: 7,
street_name: street7
}
]
}
有没有办法以只返回与某个名称regexp
匹配的子文档的方式查询集合?
例如:
获取street_name
包含“”(3个空格)的所有子文档。
答案 0 :(得分:1)
使用聚合框架时的过程如下所示:
{$ match:{“streets.street_name”:“/ REGEX_EXPRESSION_HERE /”}}
{$放松: “$街道”}
{$ match:{“streets.street_name”:“/ REGEX_EXPRESSION_HERE /”}}
{$ project:{_ id:0,“street_id”:“$ streets.street_id”,street_name“:”$ streets.street_name“,city_id:1}}
- 编辑前
您可以在regex
中使用filter expressiondb.collection.find({"streets.street_name":"/REGEX_EXPRESSION_HERE/"})