【问题标题】:Mongoose Find Fullname with array of String猫鼬用字符串数组查找全名
【发布时间】:2018-09-04 06:03:56
【问题描述】:

示例数据

 {
    "_id" : ObjectId("5b77a707ee4b1c14fcf43ff8"),
    "nombre" : "NICOLAS SEGUNDO ZULETA VELIZ",
    "nacimiento" : "10-09-1937",
    "difuncion" : "10-01-1995",
    "idPropiedad" : ObjectId("5b77a707ee4b1c14fcf43ff7"),
    "__v" : 0
}

我正在尝试搜索以下搜索查询将在 Nombre 属性上起作用的位置

nico zu
nicolas zuleta
nicolas segundo zuleta
zuleta veliz
zuleta nicolas

我已经尝试了几种类似的东西

db.getCollection('difuntos').find({nombre: {$regex:"nico zu","$options": "i"}})
db.getCollection('difuntos').find({nombre: {$in : [ /nicolas/i,/zu/i ]}})

这行不通

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    您可能可以将输入(例如 nico zu)拆分为 2 个元素 -> [nico, zu] 并简单地创建这种正则表达式:

    db.getCollection('difuntos').find({nombre: {$regex:".*nico.*zu.*","$options": "i"}})
    

    您需要做的就是用 (.*) 将输入的单词(例如 noco、zu)括起来

    【讨论】:

    • 尽管这确实适用于第一个选项,但它也适用于 zuleta nicolas 组合,感谢您的帮助
    【解决方案2】:

    这应该可行:

    db.difuntos.find({"nombre": { $regex: searchString.split(' ').join("|"), $options: "i" }})
    

    searchString 将是您的示例值之一:

    nico zu
    nicolas zuleta
    nicolas segundo zuleta
    zuleta veliz
    zuleta nicolas
    

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2014-11-07
      • 1970-01-01
      • 2016-10-13
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多