猫鼬用合并的字段和一个搜索参数查找文档

时间:2019-02-06 19:45:00

标签: node.js mongodb search mongoose

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

first_name
last_name
status

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

full_name: Craig de Zia
status: alive

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

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

问题在于数据库中没有 full_name 字段。我们需要合并名字字段和姓氏字段。我该怎么办?

1 个答案:

答案 0 :(得分:1)

根据条件管理名字姓氏

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

请在$ concat中将名字和姓氏管理为“名字姓氏” ,如果要搜索, 名字姓氏,并在它们之间留有空格,然后使用

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