我想对聚合框架的$ match部分内的字段进行$ regex查询
以下是集合中的示例文档:
{
"_id": ObjectId("5ce6bfea63519d2f77014dcc"),
"lead_name": [
{
"Bill": "Toz"
}
,
{
"Gordon":"Banks"
}
],
"lead_email": [
{
"email": "bto@.com"
}
],
"lead_phone_number": [
{
"phone_number": "+148034543"
}
],
"lead_country": [
{
"country": "US"
}
],
"lead_city": [
{
"city": "Phoenix"
}
],
"lead_team_id": "5cd98dd163519d6dd94aff12",
"lead_source_id": "5cd98c9d63519d61432db1c5",
"lead_status_id": "5cd98c9e63519d61432db387",
"lead_assigned_to_user_id": "",
"created_on_timestamp": 1558625945,
"last_updated_on_timestamp": 1558625945,
"lead_last_interaction_timestamp": 1558625945,
"lead_last_interaction_subject": "Inbound call - answered",
"lead_products": [],
"lead_metadata": []
}
我希望如果查询值为“ Bill”,它将向我返回此文档
答案 0 :(得分:1)
我使它可以与以下管道一起使用,尽管我不建议您以这种方式存储数据,否则您会遇到这样的问题。 https://mongoplayground.net/p/R_I5_J1KeiZ
db.collection.aggregate([
{
$match: {
"lead_name": {
$elemMatch: {
"Bill": {
$ne: null
}
}
}
}
}
])
如果可以的话,建议您将数据更改为以下内容。最好在不同的集合中一次定义这些“潜在”用户,然后使用标识符对其进行引用。
虽然我不知道这些数据实际上存储了什么,所以对于您的用例来说,这可能不是一个很好的解决方案,但我想我也可以分享一个想法。
"lead_name": [
{
"firstname": "Bill",
"lastname": "Toz",
"email": "bto@.com",
"phone_number": "+148034543",
"country": "US",
"city": "Phoenix"
},
{
"firstname": "Gordon",
"lastname": "Banks"
}
],