node.js - mongoose 使用一个搜索参数查找包含组合字段的文档

标签 node.js mongodb search mongoose

我正在将 Nodejs 和 Mongodb 与 Mongoose 一起使用。我的模型包含以下属性:

first_name
last_name
status

我需要使用 mongoose 查找功能来搜索具有这 3 个字段的用户。我有 2 个参数:

full_name: Craig de Zia
status: alive

例如,我的名字叫 Craig de Zia。我不知道名字的哪些部分是名字或姓氏,所以我想搜索全名。我想用“$and”逻辑连接全名和状态。条件结构如下:

'$and': [ 
    { 'full_name': 'Craig de Zia' },
    { status: 'alive' },
] 

问题是数据库中没有 full_name 字段。我们需要合并 first_name 字段和 last_name 字段。我怎样才能做到这一点?

最佳答案

根据条件管理名字姓氏

db.collection.find({
  $and: [
    {
      $expr: { $eq: ['Craig de Zia', { $concat: ["$first_name", "$last_name"] }] }
    },
    { 'status': 'alive' }
  ]
})

如果您想搜索,请在此处管理名字和姓氏$concat为“first_namelast_name” first_namelast_name 之间有空格,然后使用

{ $concat: ["$first_name", "", "$last_name"] }

关于node.js - mongoose 使用一个搜索参数查找包含组合字段的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54561401/

相关文章:

node.js - redis 中的快速 hmset 产生空哈希

search - 使用 & 符号进行 Marklogic 搜索

node.js - 编译 bcrypt 时出错 - node.js

php - setSlaveOkay 已弃用?

grails - 即使使用显式刷新,也无法让 GORM mongodb 插件保存新记录

mongodb - 如何通过身份验证在 Upstart 服务中设置mongodb

java - Lucene 搜索查询中的嵌套禁止/要求运算符

python - numpy.searchsorted 二维数组

node.js - 在通过 Apache 代理的 Node.js 应用程序中使用 SSL

javascript - 我可以/如何将 Selenium webdriver 测试脚本从 node.js 转换为 phantomjs - Ghostdriver?