如何在mongoose查询中连接多个字段?

我想找到()所有带有LIKE’query.name’的docs,并将其连接起来,而不是使用$or来搜索分开的字段。

SQL查询是这样的。

SELECT * FROM table WHERE column.name + ' ' + column.surname LIKE query.name

这是当前的代码

Model.find()
.and([
  {
    $or: [
      { name: new RegExp(req.query.name, 'i') },
      { surname: new RegExp(req.query.name, 'i') }
    ]
  },
  {
    $or: [
      { workPlace: new RegExp(req.query.place, 'i') },
      { location: new RegExp(req.query.place, 'i') }
    ]
  }
])

解决方案:

这可以通过一个两阶段的聚合查询来实现。我们的想法是将 $concat 名称和位置字段作为独立的过滤属性,在第一阶段使用的是 $addFields 然后用 $match$regex 在下一阶段。

例。

db.collection.aggregate([
  {
    $addFields: {
      nameFilter: {
        $concat: ["$name", " ", "$surname"],
      },
      locationFilter: {
        $concat: ["$workplace", " ", "$location"],
      },
    },
  },
  {
    $match: {
      nameFilter: {
        $regex: req.query.name,
        $options: "i",
      },
      locationFilter: {
        $regex: req.query.place,
        $options: "i",
      },
    },
  },
]);

mongo游乐场实例链接

给TA打赏
共{{data.count}}人
人已打赏
未分类

Chrome浏览器不生成冰的候选者,WebRTC

2022-9-8 13:56:42

未分类

在我的量角器测试中,我想在不同的场合将同一个文件上传到我的应用程序中,但是我的应用程序在上传时对唯一的文件名进行了验证,如何才能多次上传同一个文件?

2022-9-8 14:07:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索