如何匹配 MongoDB 中元素数组中的字符串
How to match a String in array of elements in MongoDB
我有一个示例数据,如下所示,我想提取仅包含 Volvo
.
的数据的结果
[
'Volvo Sedan',
'Volvo SUV',
'Volvo Premium',
'Volvo Sport',
'Honda Sedan',
'Honda SUV',
'Honda Premium',
'Honda Sport'
]
我尝试过类似的方法,但没有 return 任何结果。谁能指导如何实现它?
db.cars.distinct('carType', {carType: {$in: [/Volvo/]}})
首先,$in 用于将文档中字段的值与查询中的项目数组进行比较,而不是相反。例如。 select 至少有一个 carType
匹配 /Volvo/
的所有文档,这就足够了
db.cars.distinct('carType', {carType: /Volvo/})
其次,distinct对文档进行操作。首先,它应用过滤器来匹配在 carType 数组中具有 至少一个 Volvo 的文档,然后它在这些文档中获取 all carType 并合并为单个具有唯一值的数组。例如。如果你有一个带有 carTypes
的文档
[
'Volvo Sedan',
'Volvo SUV',
'Volvo Premium',
'Volvo Sport',
'Honda Sedan',
'Honda SUV',
'Honda Premium',
'Honda Sport'
]
第一项匹配 /Volvo/,因此所有项都将包含在结果中。
假设您要检索具有与您的正则表达式匹配的唯一 carType 的列表,您需要使用聚合框架。例如:
db.cars.aggregate([
{$unwind: "$carType"},
{$match: {carType: /Volvo/}},
{$group: {_id: "$carType"}}
])
我有一个示例数据,如下所示,我想提取仅包含 Volvo
.
[
'Volvo Sedan',
'Volvo SUV',
'Volvo Premium',
'Volvo Sport',
'Honda Sedan',
'Honda SUV',
'Honda Premium',
'Honda Sport'
]
我尝试过类似的方法,但没有 return 任何结果。谁能指导如何实现它?
db.cars.distinct('carType', {carType: {$in: [/Volvo/]}})
首先,$in 用于将文档中字段的值与查询中的项目数组进行比较,而不是相反。例如。 select 至少有一个 carType
匹配 /Volvo/
的所有文档,这就足够了
db.cars.distinct('carType', {carType: /Volvo/})
其次,distinct对文档进行操作。首先,它应用过滤器来匹配在 carType 数组中具有 至少一个 Volvo 的文档,然后它在这些文档中获取 all carType 并合并为单个具有唯一值的数组。例如。如果你有一个带有 carTypes
的文档[
'Volvo Sedan',
'Volvo SUV',
'Volvo Premium',
'Volvo Sport',
'Honda Sedan',
'Honda SUV',
'Honda Premium',
'Honda Sport'
]
第一项匹配 /Volvo/,因此所有项都将包含在结果中。
假设您要检索具有与您的正则表达式匹配的唯一 carType 的列表,您需要使用聚合框架。例如:
db.cars.aggregate([
{$unwind: "$carType"},
{$match: {carType: /Volvo/}},
{$group: {_id: "$carType"}}
])