Mongodb 如何找到地址字段中有单词的用户?

Mongodb 如何找到地址字段中有单词的用户?,mongodb,find,Mongodb,Find,“地址”:“加利福尼亚州萨利克斯市瓦尔丹法院570号,邮编4869”,“关于” 我如何找到居住在加利福尼亚的所有用户? 使用$in运算符?使用正则表达式搜索比使用$in运算符更容易。下面是regex在address属性中搜索字符串California的示例 db.<collection>.find({""address":{"$regex":/California/i}},{"_id":1}) db..find({“address”:{“$regex”:/California/i}

“地址”:“加利福尼亚州萨利克斯市瓦尔丹法院570号,邮编4869”,“关于”
我如何找到居住在加利福尼亚的所有用户?
使用$in运算符?

使用正则表达式搜索比使用$in运算符更容易。下面是regex在address属性中搜索字符串California的示例

db.<collection>.find({""address":{"$regex":/California/i}},{"_id":1})
db..find({“address”:{“$regex”:/California/i},{“\u id”:1})
i用于不区分大小写的搜索。如果address属性上没有文本索引,则假设集合中有大量文档,则搜索可能需要很长时间

虽然也可以使用$in,但使用聚合框架进行查询时会有点复杂

db.<collection>.aggregate([
{ $project : { "_id":1, address_token : { $split: ["$address", " "] } } },
{ $unwind : "$address_token" },
{ $match : { address_token : /california/i } },
{ $group : { _id: "$_id" } }
]);
db..aggregate([
{$project:{“\u id”:1,地址\u令牌:{$split:[“$address”,“]}},
{$unwind:“$address_token”},
{$match:{address_token:/california/i}},
{$group:{{U id:$U id}
]);
第一阶段将标记中的address属性拆分为带分隔符的空格。接下来,将标记数组转换为每个数组元素的一行,搜索关键字california。最后,在address属性中重复regex模式的情况下,在_id属性上分组