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

时间:2016-10-08 02:54:21

标签: javascript mongodb mongodb-query database

我试图查询mongo,并根据特定字段(例如用户名或国家/地区)查询,它只返回该匹配项。我可以在get请求中获取我想要的数据,但每当我尝试按特定字段查询时它就会中断。它将返回此错误。

我的查询字符串:localhost:4002 / users?firstName = Mark

错误:MongoError:无法规范化查询: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();
     })

2 个答案:

答案 0 :(得分:0)

问题在于我的查询对象。

let query ={}

作品

答案 1 :(得分:0)

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

{$ match:{<> }

您应该添加您想要匹配的字段,在您的情况下,名称。 所以建立像

这样的查询

db.collection_name.aggregate({$匹配:{ '名称': '标记'}})