基于匹配或正则表达式的查询字符串查询Mongo

Query Mongo based on query string with match or regex

本文关键字:查询 字符串 Mongo 正则表达式 于匹配      更新时间:2023-09-26

我试图查询mongo,并且查询基于特定字段,例如用户名或国家,它只返回该匹配。我可以在get请求上获得我想要的数据,但每当我尝试按特定字段查询时,它就会中断。它将返回这个错误。

my query string: localhost:4002/users?firstName =标记

err: MongoError: Can't canonicalize query: BadValue不支持的投影选项:firstName: {$match: "Mark"}

  app.get('/users', (req,res) => {
    co(function*(){
      var dbSocial = yield MongoClient.connect(dbSocialUrl);
      let query = {
          firstName:1,
          lastName:1,
          createDT:1,
          "_mailAddress.country":1,
          ownerId:1,
          userName:1
      }
      //
      if (req.query.firstName) {
        query["firstName"] = {
          $match: req.query.firstName || '',
        }
      }
      console.log('query',query);
      //get users
      var users = yield dbSocial
        .collection('user')
        .find({},(query))
        .limit(100)
        .toArray();
     })

查询对象出现问题。

let query ={}
作品

$match是一个聚合管道操作符,它接受指定查询条件的文档。它接受一个对象作为查询。

{$match: {<>}}

您应该放置您想要匹配的字段,在您的示例中是name。因此,像这样构建查询,

db.collection_name.aggregate({$匹配:{"名称":"马克"}})