【问题标题】:NOT LIKE query in MongoDB aggergateNOT LIKE MongoDB 聚合中的查询
【发布时间】:2019-05-20 08:23:33
【问题描述】:

我有一个查询,我想在其中使用 aggregate $match$regex 实现 not like 查询。

我希望结果在image url 中没有nophoto

所以我写的 $match 查询是

[
  '$match'=>[
    'author.image'=>[
      '$ne'=>[
        '$regex'=>'/nophoto/'
      ]
    ]
  ]
],

但结果还是

[
  {
    _id: {
      $oid: "5cc2b26236d94e620335b6a3"
    },
    image: "https://images.gr-assets.com/authors/1397937527p7/46603.jpg"
  },
  {
    _id: {
      $oid: "5cc2b26236d94e620335b6a4"
    },
    image: "https://images.gr-assets.com/authors/1397937527p7/46603.jpg"
  },
  {
    _id: {
      $oid: "5cc2b26236d94e620335b6a5"
    },
    image: "https://s.gr-assets.com/assets/nophoto/user/u_333x500-46491541e26dbeac15f51487d68dd207.png"
  },
  {
    _id: {
      $oid: "5cc2b26236d94e620335b6a6"
    },
    image: "https://s.gr-assets.com/assets/nophoto/user/u_333x500-46491541e26dbeac15f51487d68dd207.png"
  }
]
  

我希望结果集的图片网址中没有 nophoto

【问题讨论】:

    标签: php mongodb mongodb-query aggregation-framework


    【解决方案1】:

    您必须使用$not 查询运算符来反对$regex 字符串。

    db.collection.find({
      'image': {
        '$not': {
          '$regex': "nophoto"
        }
      }
    })
    

    在 PHP 中它看起来像这样

    [
      '$match'=>[
        'image'=>[
          '$not'=>[
            '$regex'=>'nophoto'
          ]
        ]
      ]
    ]
    

    MongoPlayground

    【讨论】:

    • 我实际上想将它与aggregate 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2015-01-31
    相关资源
    最近更新 更多